Python:如何使用嵌入式python解释器?

时间:2014-08-13 12:33:39

标签: c# python .net python-embedding python.net

我尝试使用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中获取一个对象时,代码都会失败。

我做错了什么?

1 个答案:

答案 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)");
}