[英]“No module named fcntl” when py script run from c# but works from windows command line
我正在調用使用imaplib.py的python腳本,並收到“沒有名為fcntl的模塊”錯誤。 通過搜索,我發現該模塊僅在UNIX中可用,因此我想知道py腳本是否對正在運行的操作系統感到困惑。 同樣,腳本可以在直接從python目錄運行的Windows下正常運行。
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
這里還有一個Bug報告,其中有一些討論: http : //bugs.python.org/issue8110
Microsoft發行版默認情況下不會加載標准庫。
您必須在代碼中設置路徑才能訪問它。
最簡單的方法是創建一個名為“ 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.