如何为控制台和 WPF .NET 应用程序的 PythonNET 设置 Runtime.PythonDLL(PIP 安装)
How to set Runtime.PythonDLL for PythonNET for Console & WPF .NET Application (PIP Installation)
我正在尝试在 Python 3.10
上安装 PythonNET
并先将 Python 嵌入到 .NET 控制台应用程序中,然后再在 WPF 应用程序上进行尝试。
但是,在 GitHub 上下载本机代码并通过 pip install .
在解压缩的代码文件夹中安装后,我仍然对 PythonNET
的安装感到困惑。安装确实成功完成,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 3.10
上安装 PythonNET
并先将 Python 嵌入到 .NET 控制台应用程序中,然后再在 WPF 应用程序上进行尝试。
但是,在 GitHub 上下载本机代码并通过 pip install .
在解压缩的代码文件夹中安装后,我仍然对 PythonNET
的安装感到困惑。安装确实成功完成,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 就足够了。