c# - "No module named fcntl"当 py 脚本从 c# 运行但从 Windows 命令行运行时

标签 c# .net python ironpython

我正在调用一个使用 imaplib.py 的 python 脚本,并收到“没有名为 fcntl 的模块”错误。通过搜索,我发现这个模块仅在unix中可用,所以我想知道py脚本是否对它运行的操作系统感到困惑。同样,脚本在 Windows 下工作正常,直接从 python 目录运行。

    var engine = Python.CreateEngine();
    ScriptScope scope = engine.CreateScope();
    var ops = engine.Operations;
    var script = engine.CreateScriptSourceFromFile("PyTest.py");
    CompiledCode code = script.Compile();

    //string scode = script.GetCode();
    code.Execute(scope);

以及触发它的最小 py 脚本。请注意,注释掉 import imaplib.py 行将停止错误。

import sys
sys.path = ["Python\Lib"]
sys.platform = ["win32"]

import os
import os
import getopt
import getpass
import time
import imaplib

我追踪了一下imaplib.py使用的subprocess.py,在那里我注意到了sys.platform变量并尝试将其设置为win32,如上所述,但没有什么区别。 IronPython 调用环境和 cpython 文件夹中的 Windows 命令提示符之间有些不同。

最佳答案

首先,您将 sys.platform 设置为一个列表,它应该是一个字符串。不过,.NET/CLI 是与 Win32 不同的平台,因此仅设置 sys.platform 没有帮助。

一些谷歌搜索表明 IronPython 不支持 subprocess 模块(或者该模块不支持 IronPython)。这里有部分替换:http://www.ironpython.info/index.php?title=The_subprocess_module

这里还有一个包含一些讨论的错误报告:http://bugs.python.org/issue8110

关于c# - "No module named fcntl"当 py 脚本从 c# 运行但从 Windows 命令行运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027157/

相关文章:

c# - 在我的应用程序中,EF 4.1 代码优先执行查询比常规 EF 慢 3 倍

python - 如何从python列表中提取索引倍数为2的元素

c# - c# lambda 是如何捕获变量的

c# - 使用右键单击 Windows 窗体按钮

c# - 长文本和 TextTrimming 时的 TextBlock 问题

c# - GridView中LinkBut​​ton的行索引

c# - 呈现应该为正数的负数的阶乘计算器。怎么修?

python - 如何显示包含 django 模板变量的字符串?

python - 在跳过第一行并使用第二行作为 pandas 中符号的原始刻度数据的标题时,无法读取 csv

c# - IOException with File.Copy() 尽管之前有 File.Exists() 检查