Как установить 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).