如何在Windows上安装Python for .NET

17 投票
6 回答
42904 浏览
提问于 2025-04-17 14:21

我下载了Python for .NET
在这个压缩包里有几个文件:clr.pydnPython.exePython.Runtime.dll,还有两个调试数据库文件。
我把clr.pydPython.Runtime.dll放到了我的Python DLLs目录,也就是C:\Python27\DLLs,想着这样就可以安装好了。然后我打开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 for .NET的说明文件说有Windows的安装包,但我只找到了这个压缩文件。

6 个回答

4

我自己动手做了一些事情,创建了一个Python.Net的Chocolatey包。要安装这个包,只需在命令行中运行:

cinst pythonnet

这样做可能会帮助那些在运行这个程序时遇到问题的用户。

5

正确安装Python for .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上无法让这个工作。

16

在Python中加载CLR的正确方法如下:

  1. 确保在Python安装文件夹中没有残留的旧版Python.NET文件(比如C:\Python27)。在我的情况下,我发现某个文件夹里有旧的clr.pyd文件。需要注意的是,某些旧版本的pip没有删除Python.NET的所有部分。
  2. 把包含Python.NET文件(clr.pydPython.Runtime.dll)的目录添加到sys.path中。

现在你可以以最灵活的方式加载CLR,甚至不需要把它安装到Python目录里!

你可以从GitHub上编译源代码:

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

或者使用Christoph Gohlke提供的Windows安装包:

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

也可以通过pip从PyPI安装这个包:

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

还有更多的安装选项,比如docker、WinPython、conda、nuget和choco,可以在这里找到:

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

撰写回答