2010-10-26 106 views
1

我打电话给一个python脚本,它使用imaplib.py并得到“no module named fcntl”错误。从搜索中我发现这个模块只能在unix下使用,所以我想知道py脚本是否对它运行的操作系统感到困惑。同样,脚本可以在python目录直接运行的windows下正常工作。当py脚本从c#运行,但从Windows命令行运行“No module named fcntl”

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脚本来触发它。请注意,注释输入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命令提示符之间有所不同。

+0

那么在运行IronPython时,各种stdlib模块的不同可用性会产生混淆? – 2010-10-26 19:34:03

回答

0

微软分布并不默认加载的标准库。

您必须在代码中设置路径才能访问它。

最简单的方法是创建一个名为“IRONPYTHONPATH”的环境变量,其中包含IronPython安装的Lib文件夹的路径。

一旦你创建了它,你可以阅读的位置,如下所示:这里

from System import Environment 
pythonPath = Environment.GetEnvironmentVariable("IRONPYTHONPATH") 
import sys 
sys.path.append(pythonPath) 

更多细节。 http://www.ironpython.info/index.php/Using_the_Python_Standard_Library

相关问题