[英]Import module works in terminal but not in IDLE
我正在嘗試在 Windows 計算機上導入pyodbc
模塊。 它適用於終端,但不適用於 IDLE。 IDLE 中的錯誤信息是:
Traceback (most recent call last):
File "FilePath/Filename.py", line 3, in <module>
import pyodbc
ImportError: No module named pyodbc
這通常發生在使用不同路徑安裝多個版本的 python 時。 您可以通過打開 IDLE 終端並使用
import sys
sys.version
sys.path
這些命令將打印當前 python 實例的系統路徑和版本。 在 IDLE 和命令行終端中使用它來查看每個不同的地方。 一旦你知道哪個版本是你想要的,那么只需刪除另一個。 您還可以刪除所有 python 實例,然后重新安裝一個干凈的 python 環境,但是您必須使用 pip 或 easy_install 重新安裝所有模塊
您可以在安裝包后pip show
並了解安裝包的位置。
之后檢查 IDLE sys.path
並且如果包不在sys.path
目錄嘗試添加它。
import sys sys.path.append("/home/dm/.local/lib/python3.6/site-packages") # or another folder that `pip show` about package.
python
並回車)import modulename
)modulename.__file__
import sys
並鍵入sys.executable
以獲取查找要導入的模塊的路徑這種方法對我有用。
我找到了解決方案。 這個對我有用
問題是你的安裝目錄與python版本目錄不匹配。
解決辦法是>>>
這是因為安裝了多個 python(32 位版本,64 位版本)或 3v 和 2.7v,所以要解決這個問題,你必須像這樣調用該特定版本的idle
cd
到導入在該文件夾中在 cmd中正常工作的版本的dir
,請在下面鍵入此命令
pythonw.exe Lib\idlelib\idle.pyw
此命令將為該版本調用 idle 並且導入將正常工作
例如,當您將具有 import pandas 的 python 腳本與站點包(例如 pandas)放在同一文件夾中並使用與 CMD 上使用的相同版本的 python 時,它應該有助於在 IDLE 中運行您的腳本。
檢查代碼的路徑和模塊的路徑。 將模塊復制到代碼為我工作的路徑。 'sys.executable' 將給出存儲代碼的路徑。
我在嘗試導入在終端上成功導入但無法在 IDLE 上安裝的模塊時也遇到了同樣的問題。
我怎么修的?
假設您知道如何在終端以及 Python 解釋器內部執行命令
打開終端並執行以下命令:
:~$ python3
Python 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> >>> import sys >>> sys.version '3.6.9 (default, Jan 26 2021, 15:33:00) \\n[GCC 8.4.0]' >>> sys.path ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist- packages', '/usr/lib/python3/dist-packages'] >>>
現在在你的 python3 解釋器中導入你的模塊。
>>> import nester
>>>
>>> nester.__file__
'/usr/local/lib/python3.6/dist-packages/nester.py'
>>>
打開您的 IDLE 並運行以下命令並進行比較
Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> import sys >>> sys.version '3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)]' >>> sys.path
['','C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python39\\Lib\\idlelib', 'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python39\\DLLs'、'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python39\\lib'、'C:\\Users\\username\\ AppData\\Local\\Programs\\Python\\Python39', 'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages']
>>> sys.executable
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python39\\pythonw.exe'
現在,如果您比較 Terminal & IDLE 的兩個輸出,
所以我只是將我的文件復制到“C”目錄並確保其文件權限。 就是這樣。
:~$ cp -p /usr/local/lib/python3.6/dist-packages/nester.py /mnt/c/Users/username/AppData/Local/Programs/Python/Python39/Lib/
有效!!
對於windows,打開命令提示符,輸入pip show pyodbc
,獲取包路徑並復制路徑。 然后打開空閑並運行這些行
import sys
sys.path
匹配命令提示符中的路徑和在 IDLE 中運行以上行提供的列表中提到的路徑。 如果未提及路徑,則在空閑狀態下運行這些行
sys.path.append("Enter the copied path of package here")
執行這些行后,通過導入包再次檢查它是否適合您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.