尝试在Maya 2018 Python环境中导入cjson

时间:2018-07-02 17:44:27

标签: python json maya cjson

我想在Maya 2018中使用cjson,但遇到了一些麻烦。原始工具似乎是32位编译(https://pypi.org/project/python-cjson/),所以我环顾四周,发现从https://www.lfd.uci.edu/~gohlke/pythonlibs/开始以64位编译的版本。

在管理模式下使用“ C:\ Program Files \ Autodesk \ Maya2018 \ Python \ Scripts \ pip.exe”,我设法通过pip安装了64位的wheel文件,这在我的Maya 2018站点中给了我cjson.pyd-软件包目录。

但是,当我尝试导入它时,出现错误:

// Error: root : [('<maya console>', 2, '<module>', None)] //
// Error: root : DLL load failed: The specified module could not be found. //
// Error:  //

以前有没有人有将该模块导入Maya的经验?

我觉得这可能与DLL相关,但是我不确定从哪里开始解决它。

1 个答案:

答案 0 :(得分:2)

因此,传统上,您会使用Dependency Walker之类的东西来检查dll的依赖项。 .pyd文件只是重命名的.dll文件,因此应该可以正常工作。但是,Dependency Walker大多杂乱无章-除非您发现真正明显的东西(并且可以直接忽略所有API-MS-WIN *,EXT-MS- * dll),否则您可能会发现启用Loader Snaps更容易(看到这个古老但仍然relevant MSDN article的地方),希望它能够告诉您哪个负载库调用失败。或者,您可以使用Process Monitor(procmon)形式的Sysinternals来查看将模块导入脚本时Maya尝试加载哪些文件。我不记得是否Maya产生了一个单独的进程来运行它的python脚本,或者它们是否在主要Maya进程的上下文中执行。这很重要,因为您希望将procmon中的事件过滤为maya / python可执行文件,否则您将被它们淹没。

编辑:查看源代码后,除了python标头本身和一些标准库之外,似乎没有太多的依赖方式。我怀疑这很可能是使用不同于Maya的Python版本的工具链编译的。在Python解释器中,启动它时应看到如下一行:

Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)] on win32

最好查看使用了哪些工具链进行编译(方括号位),然后再次使用该工具链从源代码构建扩展。另外,您可以尝试从项目的GitHub页运行此模块的setup.py,如果您的计算机被设置为能够正确编译python扩展,则它将从源代码进行构建。在Python docs page上可以找到有关构建c扩展的更多详细信息。