【问题标题】:How to compile a py file to .so for Autodesk Maya OSX如何为 Autodesk Maya OSX 将 py 文件编译为 .so
【发布时间】: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 之前,则不应发生这种情况。

标签: python macos cython maya autodesk


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2019-03-19
    • 1970-01-01
    • 2013-01-08
    • 2011-07-14
    相关资源
    最近更新 更多