c# - C# 中的 Ironpython 导入模块导入 csv 模块时出错

标签 c# python csv ironpython

我正在尝试从 C# 应用程序中执行 Python 脚本,但当它尝试启动该脚本时,我收到错误 ImportException 未处理 No module name csv。我检查了 Ironpython 文件夹,有一个 csv.py 文件...?

我用来调用脚本的代码:

 IDictionary<string, object> options = new Dictionary<string, object>();
 options["Argument"] = new[] { filePath, profile };
 var pyEngine = Python.CreateEngine(options);
 var pyScope = pyEngine.CreateScope();
 string script = "xccdf-xml2tsv.py";
 pyScope.SetVariable(profile, options);

 pyEngine.ExecuteFile(script, pyScope);

Python 文件:

#!/usr/bin/env python

###
# (C) 2010 Adam Crosby
# Licensed under:
#  http://creativecommons.org/licenses/by-nc-sa/3.0/
##
import csv
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import xml.etree.ElementTree as ET
xmlns = "http://checklists.nist.gov/xccdf/1.1"
...

最佳答案

您创建的 IronPython 引擎不知道它应该使用的标准库实现。您可以通过添加类似的内容来指定它

var paths = pyEngine.GetSearchPaths();
paths.Add(@"C:\Program Files (x86)\IronPython 2.7\Lib");
pyEngine.SetSearchPaths(paths); 

您可以将其指向本地安装的 Iron Python(如我的示例中所示)或使用 appropriate NuGet package直接将其添加到您的项目中。您可能还需要将其部署到输出文件夹/安装程序/...

另请注意this answer以及this answer and comments因为他们可能会提供额外的信息。

关于c# - C# 中的 Ironpython 导入模块导入 csv 模块时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27472188/

相关文章:

c# - 我可以自动将代码和新类放入我的解决方案的很多部分吗?

javascript - 对 JSON 数据进行编码以保留 json 格式

python - 元组列表的列表,按第一个元素分组并添加第二个元素

python - 从字符串末尾分割字符串中的 3 个空格分隔的值?

python - 如何使用 Nose 的assert_raises?

java - 使用univocity解析两个不同的csv文件并写入新的csv文件

c# - 区域和路由

c# - 使用 DocX 库在 DOCX 文件中查找表格

html - Elm -- 将文本文件解析为 Html

python - 将 CSV 转换为字典,其中一列作为键,一列作为值