日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maya mayapy.exe 安装 Cython,编译 pyd

發(fā)布時間:2024/9/5 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maya mayapy.exe 安装 Cython,编译 pyd 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Maya mayapy.exe 安裝 Cython,編譯 pyd

前言

在?Python 2.7 cython cythonize py 編譯成 pyd 談?wù)勀切┛?中最后提到,使用? VCForPython27 編譯的 pyd,不能在 maya 中使用,這跟編譯 mayapy.exe 的 msc 有很大關(guān)系,運行 mayapy.exe 就能獲取 python 的版本 和 msc 的版本,至于 msc 和 VS 的版本對應(yīng),請參閱:MSC VS 版本對應(yīng)

軟件安裝

maya2014

vs 2010(只要安裝就行,mayapy.exe 會自動找到 msc)

編譯和安裝 Cython 到 maya2014 的 python lib 中

這里我們需要 Cython 源碼,用 maya2014 的 python.exe 來運行 Cython 的 setup.py,這樣會自動找到 vs2010 的 msc 來編譯 Cython,這樣才會和 maya 的 python.exe 的 msc 版本一致。

下載 Cython-0.26,或者在github上下載最新的版本?https://github.com/cython/cython

編譯預(yù)準備:

在編譯前,我們需要在 maya 的安裝路徑中配置一下編譯需要的 python 頭文件和 python.lib,根據(jù)參考:maya環(huán)境下,py?->?pyd,里面說的過程是對的,但是細節(jié)卻有錯誤,根據(jù)編譯中的錯誤提示,我是這樣做的:

以下的目的都是以maya的安裝目錄為前綴的:

1.在 /Python 文件夾中新建一個 includelibs 文件夾(這兩個文件夾是必須的,我是根據(jù)編譯過程中的報錯找到的這兩個文件夾)

2.拷貝 /lib/python27.lib 到 Python/libs

3.拷貝 /include/python2.7 中所有的文件到 Python/include

編譯

1.把下載的 cython 壓縮包解壓到任何路徑(不建議中文路徑或者一些奇葩路徑)

2.管理員運行 cmd (win 系統(tǒng)),因為最后會拷貝編譯好的 package 到 maya 的安裝目錄下,可能需要一些權(quán)限,尤其是如果 maya 安裝在 C 盤。

3.cd 到 解壓后的?cython 目錄下運行 "[ maya安裝目錄 ]\bin\mayapy.exe" setup.py install

4.沒有報錯就表示成功,運行?mayapy.exe >>> import Cython 可以檢測是否安裝成功

編譯 pyd

同樣,我們需要用 mayapy.exe 來運行我們的 setup.py:mayapy.exe setup.py build_ext --inplace

至于 setup.py 如何編寫,請參考?Python 2.7 cython cythonize py 編譯成 pyd 談?wù)勀切┛?中相關(guān)部分即可

編譯后的 pyd 兼容性

用 maya2014 的 cython 編譯出來的 pyd 能兼容到 maya2018,至于更高版本,可能到了使用 python3 的maya就不兼容了。

max2018 python 也兼容,可能也跟 maya 一樣,python3 的 max python 就不再兼容

官方版的 python2 也是兼容的

注意點

__init__.py 不能編譯成 pyd

關(guān)于 .py 中的 __file__ 屬性,雖然能編譯通過,但是編譯成 pyd 后,會報 "__file__ is not defined" 的錯誤,所以這個要特殊處理一下,__file__屬性是import 一個py 模塊后產(chǎn)生的,所以我們可以把相關(guān)的變量定義到 __init__.py 中

pyd 和 pyc 混合使用

在測試中,由于我的一個模塊中有 __file__ 屬性,所以我把 pyd 重命名,拷貝一個 pyc 到相應(yīng)目錄下,發(fā)現(xiàn)一些 import 該模塊的模塊中的屬性不完整,所以建議:pyd 不要引用 相關(guān)聯(lián)的而不被編譯成pyd 的 pyc,py 和 pyc 可以引用 pyd

轉(zhuǎn)pyd的py中盡量不要用try,比如導(dǎo)入一個pyd,這個pyd中導(dǎo)入一個不存在的模塊,第一次會報出importError,但是你再導(dǎo)入pyd的時候,那個pyd會變成一個默認空的built in模塊,并不會報錯,這個有點坑

轉(zhuǎn)載于:https://www.cnblogs.com/ibingshan/p/10346354.html

總結(jié)

以上是生活随笔為你收集整理的Maya mayapy.exe 安装 Cython,编译 pyd的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。