关于c#:如何配置IronPython.StdLib 2.7.3

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软件包,但我还没有得到。