我试图在.NET4.0中嵌入Python2.6。在
按照“Python for.NET”中非常简单的文档,我编写了一个相当简单的代码,如下所示:
const string pythonModulePath = @"C:\Projects\PythonImport\PythonImport\test.py";
Environment.SetEnvironmentVariable("PYTHONHOME", Path.GetDirectoryName(python
ModulePath));
PythonEngine.Initialize();
var oldWorkingDirectory = Directory.GetCurrentDirectory();
var currWorkingDirectory = Path.GetDirectoryName(pythonModulePath);
Directory.SetCurrentDirectory(currWorkingDirectory);
var pyPlugin = PythonEngine.ImportModule(Path.GetFileNameWithoutExtension(python
ModulePath));
if (pyPlugin == null)
{
throw new PythonException();
}
Directory.SetCurrentDirectory(oldWorkingDirectory);
即使测试.py是空的,我得到一个导入错误,说“没有名为warnings的模块”。在
^{pr2}$当你跑步的时候,原因就显而易见了测试.py使用“python-v”(详细模式)。请注意,python调用了#cleanup[2]警告。在
为什么Python.NET不能解析警告?该模块位于Lib目录中。在
有什么想法吗?在
@SilentGhost我不知道你是否知道,但是你需要设置你的PYTHONPATH环境变量,而不是PYTHONHOME变量。一、 同样,如果有问题,用ol'设置环境变量环境.SetVariable(PYTHONPATH,…)最后一切都很顺利。在
祝你好运Python.NET. 在
我正在使用的是Python.NET我和Python3.6也有类似的问题。我在运行时设置环境变量的运气不太好,但我发现以下方法是有效的。在
我发现了Python.NET正在拾取静态
PythonEngine.PythonPath
变量中定义的文件夹中的所有包。如果在PYTHONPATH系统变量中设置了其他目录,它也将包括这些目录。在要在运行时包含模块目录,可以执行以下操作
确保在调用python引擎之前设置了
PythonEngine.PythonPath
变量。在还需要重新启动visualstudio以查看任何系统变量更改在调试时生效。在
另外,我还发现需要将我的\Python36\Lib\site packages文件夹路径添加到PYTHONPATH中,以获取通过pip安装的任何内容。在
我认为默认情况下Python引擎不会自动设置所需的路径。在
http://www.voidspace.org.uk/ironpython/custom_executable.shtml有一个嵌入ironpython的示例。你好像少了点什么
除非我知道Ironpython的安装位置和安装情况,否则我更喜欢找到所需的所有标准模块,将它们编译为IPyStdLibDLL,然后从代码中执行以下操作
^{pr2}$相关问题 更多 >
编程相关推荐