Как установить Python для .NET в Windows

Я загрузил Python для .NET.
Внутри zip clr.pyd, nPython.exe, Python.Runtime.dll и 2 файла отладки базы данных.
Я поместил clr.pyd и Python.Runtime.dll в свои DLL файлы python c:\Python27\DLL, думая, что это все, что необходимо для установки. Затем я открываю GUI Python и набираю import clr, и я получаю:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    import clr
SystemError: dynamic module not initialized properly

Новый для python, но не .NET, и вы хотите использовать CPython, а не IronPython. Что мне не хватает в этой установке? Чтение Python для .NET говорит, что есть установка для пакета Windows, но все, что я нашел, было zip файлом.

Ответы

Ответ 1

Правильный способ загрузки CLR в Python выглядит следующим образом:

  • Убедитесь, что из Python.NET в папке установки Python (например, C:\Python27) не осталось старых файлов. В моем случае у меня было наследие clr.pyd в одной из папок. Обратите внимание, что pip для некоторых старых версий не удаляет все части Python.NET.
  • Добавить каталог с файлами Python.NET(clr.pyd и Python.Runtime.dll) в sys.path

Теперь вы можете загружать CLR наиболее гибким способом, даже не устанавливая каталоги Python!

Вы можете скомпилировать из источника в github:

pip install git+https://github.com/pythonnet/pythonnet

или используйте колеса/установщики Windows от Кристофа Гольке:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonnet

Пакет PyPI доступен для установки из pip:

https://pypi.python.org/pypi/pythonnet

Здесь перечислены дополнительные параметры установки, такие как docker, WinPython, conda, nuget, choco:

https://github.com/pythonnet/pythonnet/wiki/Installation

Ответ 2

Правильный способ установки Python для .NET - скопировать ВСЕ файлы из .zip в каталог, содержащий ваш .py файл.

Затем, если вы выполните

python yourfilename.py

вы должны найти, что ваш оператор import clr работает. Я тестировал это с помощью python 2.7 x86 и pythonnet-2.0-Beta0-clr4.0_140_py27_UCS2_x86.zip

Я смог реплицировать вашу ошибку, только скопировав файл clr.pyd в свой рабочий каталог.

Обратите внимание, что я не смог выполнить эту работу в Python 3.3 x86 или Python 3.3 x64

Ответ 3

Я действительно занялся делами в своих руках и создал пакет Python.Net Chocolatey. для установки, просто запустите

cinst pythonnet

в командной строке. Возможно, это поможет пользователям, у которых возникнут проблемы с этим.

Ответ 4

Я не знаю, почему пока, но единственный способ заставить его работать - это скопировать эти 3 файла в каталог C:\Python27 \.

Ответ 5

Если вы планируете заморозить с помощью py2exe или pyinstall, обязательно установите версию dev. Что-то не так с выпуском 2.0.0 при упаковке с py2exe, pyinstaller и, возможно, другими морозильными камерами. Но 2.1.0.dev1 работает хорошо. Так что...

pip install --pre pythonnet

И вам нужно добавить pythone.runtime.dll в комплект (см. документы для вашего предпочтительного поставщика). Также существует проблема с тем, как py2exe загружает dll при использовании bundle_files: 1 (single exe).