如何为 Autodesk Maya OSX 将 py 文件编译为 .so
Posted
技术标签:
【中文标题】如何为 Autodesk Maya OSX 将 py 文件编译为 .so【英文标题】:How to compile a py file to .so for Autodesk Maya OSX 【发布时间】:2021-04-28 20:43:05 【问题描述】:我需要将 python 文件转换为 .so (OSX),并使用 Autodesk Maya 2020 运行此模块。我使用 Cython 进行了此操作,我成功转换了 .py 文件,但是当我将模块导入 Maya Maya 的 Python 时,无法识别模块的功能。
我不太了解 Cython 以及编译它需要考虑哪些类型的信息。
Maya Python:达尔文上的 Python 2.7.15(v2.7.15:ca079a3ea3,2018 年 4 月 29 日,20:59:26)[GCC 4.2.1 兼容 Apple LLVM 6.0 (clang-600.0.57)]
当前 Python:Python 2.7.16(默认,2020 年 1 月 26 日,23:50:38) [GCC 4.2.1 兼容 Apple LLVM 9.0.0 (clang-900.0.31)] 在 darwin 上
Cython 文件: 编译.py:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [
Extension("test", ["test.py"])]
setup(
name = 'test',
cmdclass = 'build_ext': build_ext,
ext_modules = ext_modules
)
test.py
import pymel.core as pm
def do():
mesh=pm.ls(typ= "mesh")
print mesh
return mesh
main.py
import test
test.do()
Bash 命令:
python compile.py build_ext --inplace
我得到了 .so 文件,但是当我尝试在 Maya 中导入 main.py 时,找不到函数 do(),
有什么想法吗? 在此先感谢:)
【问题讨论】:
也许用ldd
发布你的.so
的输出...ldd test.do
有(有时)一个名为 test
的内置 Python 模块。最终使用它而不是 Cython 模块很容易。我要尝试的第一件事是将您的 Cython 模块重命名为其他内容。
你可以通过import test; print test.__file__
查看test
-module
@ead 你认为值得有人为import test
问题创建一个简单的重复目标吗?它经常出人意料地出现并且没有一个好的目标(例如,这个问题与 Autodesk 非常相关,所以可能不是一个好的目标)
@DavidW 这可能是个好主意(我希望你会这样做:))。但是,尚不清楚为什么会选择来自lib
的test
:如果它是使用--inplace
构建的,并且.
通常位于sys.path
中,通常在lib
之前,则不应发生这种情况。
【参考方案1】:
嘿,伙计们,似乎更改测试的名称有效,我不认为该名称会引起问题,非常感谢所有 awnser mw
【讨论】:
以上是关于如何为 Autodesk Maya OSX 将 py 文件编译为 .so的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Autodesk Forge App 指定多个回调 URL?
python 使用Python的Autodesk Maya热键