How to configure IronPython.StdLib 2.7.3
我无法使StdLib的编译版本正常工作。
我创建了一个空的Visual Studio项目(称为StdLib),并使用加载了最新(v2.7.3)IronPython.StdLib的NUGET,该项目在我的项目中使用所有.py脚本创建了一个Lib文件夹。这些文件的构建操作默认情况下设置为"内容",但尝试同时使用该设置和"嵌入式资源"进行编译。
在我的py脚本中,我有:
1 2 3 4 | import clr clr.AddReference("StdLib") import os |
它会找到程序集,但会引发"找不到OS模块"错误。
如果我将标准库文件打包为build文件夹中的松散文件,然后执行以下操作。
1 2 3 4 5 6 7 8 9 10 11 | var runtime = Python.CreateRuntime(); var engine = Python.GetEngine(runtime); engine.SetSearchPaths(new string[] { Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location) + @"\Lib" }); ////load the script dynamic script = runtime.UseFile(ParserScriptPath); //execute the script var result = script.main("result"); |
我的问题是
您可以通过Visual Studio将标准库编译为.Net程序集吗?
如果是这样,对Lib文件夹中的.py代码文件应该采取什么构建措施?
那么什么是引用程序集的合适方法,以免在尝试导入标准库模块时失败?
我查看了以下文章:IronPython:使用pyc.py编译的EXE无法导入模块" os"
但实际上并没有安装IronPython,也不确定是否可以这样做。我使用NUGET将IronPython和IronPython.StdLib直接添加到我的项目中。我以为是因为我可以通过NUGET将IronPython.StdLib直接添加到我的项目中,所以我可以编译它并引用它。
不,您还不能通过Visual Studio进行编译。 如果需要,您必须下载IronPython并使用pyc.py从命令行进行。
最终,我将获得用于预压缩和预编译的stdlib版本的NuGet软件包,但我还没有得到。