2010-10-26 132 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

相關問題