pythonnet在.net示例中嵌入Python无法加载模块

我正在尝试从https://github.com/pythonnet/pythonnet运行.NET嵌入式Python示例。 我已经按照故障排除文章将正确的%PYTHONPATH%和%PYTHONHOME%设置为程序基目录中的anaconda环境。

激活我的anaconda环境后,我已经成功导入了sys和imp作为测试,并成功使用了PythonEngine.RunSimpleString(),但numpy示例因Python.Runtime.PythonException而失败:ImportError:没有名为’numpy’的模块

在此环境中从python导入numpy是成功的,但是这个和其他包无法在pythonnet中导入。

Pythonnet版本:2.3 x64(使用conda install -c pythonnet pythonnet安装

Python版本:Python 3.5 x64(anaconda)

操作系统:Windows 10

以下代码生成错误:

static void Main(string[] args) { string envPythonHome = AppDomain.CurrentDomain.BaseDirectory + "cntk-py35"; string envPythonLib = envPythonHome + @"\Lib"; Environment.SetEnvironmentVariable("PYTHONHOME", envPythonHome, EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("PATH", envPythonHome + ";" + Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine), EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("PYTHONPATH", envPythonLib, EnvironmentVariableTarget.Process); PythonEngine.PythonHome = envPythonHome; PythonEngine.PythonPath = Environment.GetEnvironmentVariable("PYTHONPATH"); using (Py.GIL()) { dynamic np = Py.Import("numpy"); Console.WriteLine(np.cos(np.pi * 2)); dynamic sin = np.sin; Console.WriteLine(sin(5)); double c = np.cos(5) + sin(5); Console.WriteLine(c); dynamic a = np.array(new List { 1, 2, 3 }); Console.WriteLine(a.dtype); dynamic b = np.array(new List { 6, 5, 4 }, dtype: np.int32); Console.WriteLine(b.dtype); Console.WriteLine(a * b); Console.ReadKey(); } } 

在我的环境中,site-packages下的任何包似乎都失败了。 添加到%PATH%不起作用。 有没有办法让pythonnet识别并加载这些模块?

我能够通过将Lib / site-packages添加到PYTHONPATH变量(而不是PATH)来导入模块,该变量将文件夹添加到sys.path。 任何其他python库和自定义python代码都必须将相应的文件夹添加到PYTHONPATH。

Interesting Posts