[英]Importing external module in IronPython
我目前正在开发一个用 C# 编写的应用程序,我将 IronPython 嵌入其中。我通常对此没有问题,但有一件事情我不知道如何处理。
我想将外部模块导入脚本。 我怎样才能做到这一点? 简单的import ext_lib
不起作用。 我应该将 lib 路径添加到sys.path
吗? 也许可以将 lib 的 .py 文件复制到 app 目录并从那里导入?
编辑:我最终选择了另一个解决方案 - 用py2exe
编译了我的脚本,我只是从带有Process
主 C# 应用程序运行它(不使用 IronPython)。
无论如何,感谢您的帮助;)
在使用 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);
现在,如果库位于您正在执行的脚本所在的目录中,它们将是可导入的。
可能是您的路径设置不正确。 来自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%的时间它是一个路径问题有太多。
如果你已经从NuGet
包安装IronPython
并且你想要来自CPython Standard Library
模块,那么最好的方法是安装IronPython.StdLib
NuGet
包,它来自IronPython
的同一作者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.