Попытка импортировать cjson в среде Python Maya 2018 - PullRequest
0 голосов
/ 02 июля 2018

Я бы хотел использовать cjson в Maya 2018, но у меня возникли некоторые проблемы. Исходный инструмент, похоже, скомпилирован 32-битным (https://pypi.org/project/python-cjson/)), поэтому я осмотрелся и нашел версию, которая была скомпилирована в 64-битной версии https://www.lfd.uci.edu/~gohlke/pythonlibs/.

Используя "C: \ Program Files \ Autodesk \ Maya2018 \ Python \ Scripts \ pip.exe" в режиме администратора, мне удалось установить pip-файл 64-битного колеса, и это дало мне cjson.pyd на моем сайте Maya 2018. каталог пакетов.

Однако, когда я пытаюсь импортировать это, я получаю ошибку:

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

Кто-нибудь имел опыт импорта этого модуля в Maya раньше?

У меня такое чувство, что это может быть связано с зависимостями DLL, но я не уверен, с чего начать.

1 Ответ

0 голосов
/ 03 июля 2018

Итак, традиционно вы проверяете dll на наличие зависимостей, используя что-то вроде Dependency Walker . Файлы .pyd - это просто переименованные файлы .dll, поэтому с этим все должно работать. Тем не менее, Dependency Walker в основном полон шума - если вы не заметите что-то действительно очевидное (и вы можете сразу проигнорировать все dll API-MS-WIN *, EXT-MS- *), то вам может быть проще включить Loader Snaps ( посмотрите эту старую, но все еще соответствующую статью MSDN ), которая, как мы надеемся, сможет сообщить вам, какой вызов loadlibrary не удался. Кроме того, вы можете использовать Process Monitor (procmon) из формы Sysinternals, чтобы увидеть, какие файлы Maya пытается загрузить при импорте модуля в скрипт. Я не могу вспомнить, порождает ли Maya отдельный процесс для запуска своих скриптов python или они выполняются в контексте основного процесса maya. Это важно, так как вы захотите отфильтровать события в procmon только для исполняемого файла maya / python, иначе они будут завалены ими.

Редактировать: Посмотрев исходный код, кажется, не так много зависимостей, кроме самих заголовков python и некоторых стандартных библиотек. Я подозреваю, что более вероятно, что это скомпилировано с другой версией набора инструментов, чем Python Maya. В интерпретаторе Python вы должны увидеть такую ​​строку при запуске:

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

Было бы хорошо посмотреть, какой набор инструментов использовался для его компиляции (бит квадратных скобок), а затем снова построить расширение из исходного кода с помощью этого набора инструментов. Кроме того, вы можете попробовать запустить файл setup.py для этого модуля со страницы проекта GitHub , которая, если ваш компьютер настроен на возможность правильно компилировать расширения Python, будет создавать его из исходного кода. Более подробную информацию о сборке расширений c можно найти на странице Документов Python .

...