如何为 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 这可能是个好主意(我希望你会这样做:))。但是,尚不清楚为什么会选择来自libtest:如果它是使用--inplace 构建的,并且. 通常位于sys.path 中,通常在lib 之前,则不应发生这种情况。 【参考方案1】:

嘿,伙计们,似乎更改测试的名称有效,我不认为该名称会引起问题,非常感谢所有 awnser mw

【讨论】:

以上是关于如何为 Autodesk Maya OSX 将 py 文件编译为 .so的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Autodesk Forge App 指定多个回调 URL?

python 使用Python的Autodesk Maya热键

Autodesk Maya 模型面板调整大小事件

如何为我现有的 python 环境(OSX)设置 Spyder 4

如何为 OSX 菜单额外启用复制和粘贴

如何为大型网格实现 VBO 并获得流畅的动画?