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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maya mayapy.exe 安装 Cython,编译 pyd

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

Maya mayapy.exe 安裝 Cython,編譯 pyd

前言

在?Python 2.7 cython cythonize py 編譯成 pyd 談談那些坑?中最后提到,使用? VCForPython27 編譯的 pyd,不能在 maya 中使用,這跟編譯 mayapy.exe 的 msc 有很大關系,運行 mayapy.exe 就能獲取 python 的版本 和 msc 的版本,至于 msc 和 VS 的版本對應,請參閱:MSC VS 版本對應

軟件安裝

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

編譯預準備:

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

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

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

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

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

編譯

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

2.管理員運行 cmd (win 系統),因為最后會拷貝編譯好的 package 到 maya 的安裝目錄下,可能需要一些權限,尤其是如果 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 談談那些坑?中相關部分即可

編譯后的 pyd 兼容性

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

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

官方版的 python2 也是兼容的

注意點

__init__.py 不能編譯成 pyd

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

pyd 和 pyc 混合使用

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

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

轉載于:https://www.cnblogs.com/ibingshan/p/10346354.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。