Как я могу скомпилировать расширение Python c для Python Window 10 Maya 2017? - PullRequest
0 голосов
/ 19 ноября 2018

Пройдя довольно тяжело, заставив мой python setup.py работать с setuptools и выделенным Microsoft VC (пакет компилятора Microsoft Visual C ++ для Python 2.7) и успешно скомпилировав мое расширение для Windows 10, оказалось, что в Maya 2017 включен Python исполняемый файл (mayapy) скомпилирован с другой версией, см. ниже.

с:> питон Python 2.7.1 (r271: 86832, 27 ноября 2010, 17:19:03) [MSC v.1500 64 бит (AMD64)] на win32

c:> «Программные файлы \ Autodesk \ Maya2017 \ bin \ mayapy.exe» Python 2.7.11 (по умолчанию, 21 декабря 2015 г., 22:48:54) [MSC v.1700 64 бит (AMD64)] на win32

У меня также установлена ​​Visual Studio 12. Это правильная версия компилятора.

Но как я могу сказать setuptools использовать эту версию?

Спасибо

1 Ответ

0 голосов
/ 23 ноября 2018

Быстрый и грязный способ состоит в том, чтобы скомпилировать необходимую DLL в командной строке с помощью командной строки для собственных инструментов VS2012 x64.Версия, соответствующая mayapy.exe в Maya 2017.

Для компиляции кода c используйте cl.Возможно, вам придется указать на включаемые файлы Python 2.7, используя /I.

cl / DL / I .. \ include / IC: \ Python27 \ include

, потому чтоу компоновщика могут возникнуть проблемы с поиском 'python27.lib', который вы также можете связать вручную, используя / LIBPATH для указания на каталог библиотек Python 2.7.

ссылка / DLL / LIBPATH: C: \ Python27 \libs * .obj

Это даст вам DLL и промежуточные файлы, соответствующие компилятору для mayapy.exe.

Грязная часть.Создайте расширение, используя python setup.py build.Это даст вам модуль, который будет импортироваться в обычный интерпретатор Python.Удалите каталог 'lib *' в папке 'build'.Скопируйте '.obj', '.exp' и dll во временную папку в папке сборки, что-то вроде 'temp.win-amd64-2.7 \ Release \\ src'.

Затем запустите установку python.py построить снова.Грязный да, быстро, как только вы знаете, что делать ...

...