在IronPython中导入外部模块

uol*_*lot 17 python import ironpython

我目前正在研究用C#编写的应用程序,我正在将IronPython嵌入其中.我通常没有任何问题,但有一件事我不知道如何处理.

我想将外部模块导入脚本.我怎样才能做到这一点?简单import ext_lib不起作用.我应该添加lib的路径sys.path吗?也许有可能将lib的.py文件复制到app目录并从那里导入?

编辑: 我最终选择了另一个解决方案 - 编译我的脚本,py2exe我只是从主C#app运行它Process(不使用IronPython).

无论如何,谢谢你的帮助;)

Roh*_*hit 23

在使用PythonEngine编译脚本之前,我将脚本的目录添加到引擎的搜索路径中.这就是我在C#代码中所做的:

string dir = Path.GetDirectoryName(scriptPath);                       
ICollection<string> paths = engine.GetSearchPaths();

if (!String.IsNullOrWhitespace(dir))
{
    paths.Add(dir);
}
else
{
    paths.Add(Environment.CurrentDirectory);
}
engine.SetSearchPaths(paths);
Run Code Online (Sandbox Code Playgroud)

现在,如果库位于您正在执行的脚本所在的目录中,则它们将是可导入的.


Mar*_*off 10

您的路径设置不正确.来自IronPython FAQ:

我如何使用CPython标准库?

要告诉IronPython Python标准库的位置,可以将CPython的"lib"目录添加到IronPython的路径中.为此,请将以下代码放入IronPython的"site.py"文件中(将c:\ python24\lib替换为CPython lib目录的实际路径):

import sys
sys.path.append(r"c:\python24\lib")
Run Code Online (Sandbox Code Playgroud)

另外,如果你要导入错误在CPython中为您的脚本在您的计算机上的99%的时间它是一个路径问题有太多.