Python.NET的官方网站上说支持Python 3.8。伟大的。
现在我有兴趣从用 C# (.NET Framework v4.7.2) 开发的应用程序调用现有的 python 3.8 模块。
EDITS:
由于 Python.NET 的作者几乎没有为 C# 调用提供任何安装说明,因此我按照给出的说明进行操作here。
请注意,我使用的是 miniconda3 和 python 32位(我的项目需要后者),所以我执行了以下操作:
-
我从 VScode 安装了 pythonnetpip install
以及所有必需的 python 包(让我们使用numpy
此处用于示例)在“C:\ProgramData\Miniconda3\envs\py38_32”环境下。
-
在C#中设置环境路径(在VS2019中):
string pythonPath1 = @"C:\ProgramData\Miniconda3\envs\py38_32";
string pythonPath2 = @"C:\ProgramData\Miniconda3\envs\py38_32\Lib\site-packages";
Environment.SetEnvironmentVariable("PATH", pythonPath1, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONHOME", pythonPath1, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONPATH", pythonPath2, EnvironmentVariableTarget.Process);
-
从我的项目中的“py38_32\Lib\site-packages”文件夹引用了Python.Runtime.dll并添加using Python.Runtime;
-
尝试导入 numpy:
using (Py.GIL())
{
dynamic np = Py.Import("numpy"); //fail on this line with ImportError
}
numpy 导入失败,出现“Python.Runtime.PythonException: 'ImportError”。它还说“Python版本是:来自“\bin\Debug\MyProject.exe”的Python3.8......看起来它在我的调试文件夹中查找python,而不是在上面提到的路径中......也许...... .并且使用相同的环境从 VScode 导入 numpy 工作得很好。
有人知道这里发生了什么事吗?
安装Python.NET的官方方法是通过Python包管理器pip
.
在 Windows 上,那就是python.exe -m pip install pythonnet
。这将创造Python.Runtime.dll
在你的 Python 发行版中的某个地方。只需从您的项目中引用它,并确保架构匹配。
不受支持的替代方案是使用我的非官方构建,并设置Runtime.PythonDLL
到的位置python38.dll
您选择的(您可以在运行时使用另一个 NuGet 包找到一个:哪个Python).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)