导入外部模块中的IronPython(Importing external module in Ir

2019-07-04 13:48发布

我目前正在写在C#,这我在嵌入IronPython的应用程序。我一般都没有关于它的问题,但有一个件事,我不知道该如何处理。

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

编辑:我终于选择了另一种解决方案-编译我的剧本与py2exe ,我只是运行它从主C#应用Process (不使用IronPython的)。

无论如何,感谢帮助;)

Answer 1:

编译与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);

现在,如果库在脚本,其执行驻留他们将导入的目录。



Answer 2:

有可能你的路径设置不正确。 从IronPython的常见问题 :

如何使用CPython的标准库?

为了告诉那里的IronPython Python标准库,你可以添加CPython中的“lib”目录到IronPython的的路径。 要做到这一点,把下面的代码的IronPython的“site.py”文件(替换C:\ python24 \ lib中与您的实际路径CPython的lib目录):

 import sys sys.path.append(r"c:\python24\lib") 

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



文章来源: Importing external module in IronPython