如何配置IronPython.StdLib 2.7.3

时间:2013-02-01 15:49:42

标签: c# python c#-4.0 std ironpython

我无法使StdLib的编译版本正常工作。

我创建了一个空的visual studio项目(称为StdLib)并使用NUGET加载了最新的(v2.7.3)IronPython.StdLib,它在我的项目中使用所有.py脚本创建了一个Lib文件夹。默认情况下,这些文件的构建操作设置为“content”,但尝试使用该设置和“嵌入资源”进行编译。

在我的py脚本中我有:

import clr
clr.AddReference("StdLib")

import os

它找到程序集但抛出“os module not found”错误。

如果我将标准库文件打包为build文件夹中的松散文件,并执行以下操作。

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");

我的问题是

  1. 可以通过Visual Studio将标准库编译成.Net程序集吗?

  2. 如果是这样,构建操作对于Lib文件夹中的.py代码文件应该是什么?

  3. 那么引用程序集的正确方法是什么,以便在尝试导入标准库模块时不会失败?

  4. 我查看了以下帖子:IronPython: EXE compiled using pyc.py cannot import module "os"

    但实际上并没有安装IronPython,也不确定是否可以采用这种方法。我使用NUGET将IronPython和IronPython.StdLib直接添加到我的项目中。我假设因为我可以通过NUGET将IronPython.StdLib直接添加到我的项目中,我可以编译它并引用它。

1 个答案:

答案 0 :(得分:3)

不,您将无法通过Visual Studio(尚未)编译它。如果你愿意,你必须download IronPython并使用pyc.py从命令行执行此操作。

最终我会为stdlib的预压缩和预编译版本提供NuGet包,但我还没有完成它。