首页 > 解决方案 > 如何为控制台和 WPF .NET 应用程序的 PythonNET 设置 Runtime.PythonDLL(PIP 安装)

问题描述

我正在尝试先安装PythonNETPythonPython 3.10并将其嵌入到 .NET 控制台应用程序中,然后再在 WPF 应用程序上进行尝试。

但是,在GitHub 上PythonNET下载本机代码并通过. 安装确实成功完成,在这里.pip install .Python.RunTime.dllC:\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 应用程序中是否相同,或者是否需要任何其他步骤?

提前致谢!干杯。

标签: c#.netwpfpython.net

解决方案


README存储库中:

Runtime.PythonDLL... 典型值为python38.dll(Windows)、libpython3.8.dylib(Mac)、libpython3.8.so(大多数其他 *nix)。

例如,您需要将Runtime.PythonDLL路径设置为python39.dll.

嵌入 C# 时,无需安装 pip 包。NuGet 就足够了。


推荐阅读