我尝试使用pythonnet(在https://github.com/renshawbay/pythonnet找到的python3兼容版本)使用C#中的嵌入式python解释器
我的翻译位于D:\ src \ scratch \ TestPythonNet \ TestPythonNet \ PythonRuntime,并且有#34; Lib"和" Libs"来自python发行版的文件夹。
我使用以下代码进行了测试:
<!-- language: c# -->
PythonEngine.PythonHome = @"D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime";
PythonEngine.ProgramName = "PythonRuntime";
PythonEngine.Initialize();
using (Py.GIL())
{
PythonEngine.RunSimpleString("print(1)");
}
但是,它不起作用。我得到一个&#34; SystemError:PyEvalCodeEx:NULL globals&#34;。每次我尝试从python中获取一个对象时,代码都会失败。
我做错了什么?
答案 0 :(得分:1)
我想我找到了答案。如果我添加对&#34; clr&#34;的引用由pythonnet提供的模块,它确实可以工作
PythonEngine.PythonHome = @"D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime";
PythonEngine.ProgramName = "PythonRuntime";
PythonEngine.Initialize();
// ==>
PyObject a = PythonEngine.ImportModule("clr");
using (Py.GIL())
{
PythonEngine.RunSimpleString("print(1)");
}