c# - 如何为控制台和 WPF .NET 应用程序的 PythonNET 设置 Runtime.PythonDLL(PIP 安装)
问题描述
我正在尝试先安装PythonNET
PythonPython 3.10
并将其嵌入到 .NET 控制台应用程序中,然后再在 WPF 应用程序上进行尝试。
但是,在GitHub 上PythonNET
下载本机代码并通过. 安装确实成功完成,在这里.pip install .
Python.RunTime.dll
C:\Users\Justin\AppData\Local\Programs\Python\Python310\Lib\site-packages\pythonnet\runtime\Python.RunTime.dll
但是,当我尝试在 C# 代码中指向它时,它仍然会触发BadPythonDllException
错误。
C# 配置
using System;
using System.Collections.Generic; // For some implementation using List<> later on
using Python.Runtime;
namespace ConsoleApp_PythonNET_Test
{
class Program
{
static void Main(string[] args)
{
string EnvPath = @"C: \Users\Justin\AppData\Local\Programs\Python\Python310";
string pythonPath = @"C:\Users\Justin\AppData\Local\Programs\Python\Python310\Lib\site-packages\pythonnet";
Environment.SetEnvironmentVariable("PATH", EnvPath, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONHOME", EnvPath, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONPATH", pythonPath, EnvironmentVariableTarget.Process);
PythonEngine.PythonHome = Environment.GetEnvironmentVariable("PYTHONHOME", EnvironmentVariableTarget.Process);
PythonEngine.PythonPath = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Process);
//Using (Py.GIL()) Method for some Python implementations
}
}
}
我可以检查我缺少什么吗?我只是仍然指向错误的目录吗?此外,嵌入过程在 WPF 应用程序中是否相同,或者是否需要任何其他步骤?
提前致谢!干杯。
解决方案
从README
存储库中:
Runtime.PythonDLL
... 典型值为python38.dll
(Windows)、libpython3.8.dylib
(Mac)、libpython3.8.so
(大多数其他 *nix)。
例如,您需要将Runtime.PythonDLL
路径设置为python39.dll
.
嵌入 C# 时,无需安装 pip 包。NuGet 就足够了。
推荐阅读
- python - conda install conda 在全新安装时发现冲突
- python - 蟒蛇基维。[8620] 无法执行脚本 main。运行 exe 文件时,作为 .py 完美运行
- javascript - pdf.js-extractor - pdf 文件未正确解析
- android - 水平交换/翻转(镜像)整个设备屏幕的内容
- r - 如何自动为多个组添加/分配颜色
- python - 执行解压算法但得到“key error: 0”
- java - 我的接口的 java.lang.ClassNotFoundException
- spring - Spring Boot REST 项目 - JAXB 和继承问题(在非 Spring Boot 版本中工作)
- python - Sqlalchemy 1.4 创建具有无关系字段的模型
- python - $ pip2.7 损坏的 sys.stderr.write(f"ERROR: {exc}") 在 Mac 上