[英]Cpython interpretter / IronPython interpretter No module named clr
[英]ImportError: No module named clr when using CPython of python.org
我正在編寫 C++ 代碼,它應該在下面調用 python 腳本。 為此,我使用 python.org 的cpython 。 一些 python 腳本在 python for .net 的幫助下執行 .net 代碼,當涉及到 .net 時,所有這些都失敗了。 我嘗試構建測試應用程序以驗證它失敗的地方,發現它無法導入 clr 模塊。
當我運行此代碼時,它給了我 ImportError: No module named clr
Py_Initialize();
PyRun_SimpleString("import clr");
如果我轉到 python 控制台並輸入“import clr”,一切正常。 我還檢查了 sys.path,它包含 clr.pyd 位於“C:\\Python27\\DLLs”的文件夾。 我還嘗試通過以下方式在 C++ 中設置此路徑:
char* path = "C:\\Python27\\dlls";
Py_Initialize();
PySys_SetArgv(1, &path);
char* phome = Py_GetPythonHome();
但它沒有幫助。 另外我不明白為什么 clr 模塊像其他編譯模塊一樣顯示為 clr.pyd 而不是 .pyc 。
有人可以解釋為什么導入 clr 會通過 CPython 失敗嗎? 有沒有可能讓它發揮作用?
要安裝 clr,您必須安裝 pythonnet 庫。
您可以使用以下命令安裝 pythonnet。
pip install pythonnet
您需要在PySys_SetArgv
之后適當地調用PySys_SetArgv
以更改系統Py_Initialize
。
我在具有多個版本的 python 的代理服務器后面工作。 當我需要新模塊或希望更新現有模塊時,我會更新一個 bat 文件。 第一行設置我希望更新的版本的路徑 bat 文件從腳本目錄運行。 帶有端口“9.254.0.1:81”的代理 IP
SET path="C:\Programs\Python\Python3_64"
pip install --proxy="9.254.0.1:81" --upgrade pip
pip install --proxy="9.254.0.1:81" pythonnet
此錯誤最常見的原因是多個 Python 安裝可能(也可能不)是您 (Windows)系統PATH變量的一部分。 當您啟動 Powershell 時,它將使用該 PATH,具體取決於:
conda
, miniconda3
等,都有自己的路徑。 然后當您執行pip install pythonnet
,該軟件包將安裝在系統軟件包位置,具體取決於您使用的 pip。 檢查pip -V
。
例如:
如果您發現默認 shell 以激活conda
開頭,則需要在執行pip install
之前執行conda deactivate
。
(base) $ pip -V
pip 20.2.4 from c:\users\xxxx\miniconda3\lib\site-packages\pip (python 3.7)
(base) $ conda deactivate
$ pip -V
pip 20.2.4 from c:\python38\lib\site-packages\pip (python 3.8)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.