簡體   English   中英

導入模塊在終端中工作,但在 IDLE 中無效

[英]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.
  1. 在cmd中打開python(輸入python並回車)
  2. 在 cmd 中導入模塊(輸入import modulename
  3. modulename.__file__
  4. 您將獲得存儲模塊的路徑
  5. 復制對應文件夾
  6. 在 IDLE 中, import sys並鍵入sys.executable以獲取查找要導入的模塊的路徑
  7. 將您的模塊文件夾粘貼到 IDLE 查找模塊的路徑中。

這種方法對我有用。

我找到了解決方案。 這個對我有用

問題是你的安裝目錄與python版本目錄不匹配。
解決辦法是>>>

  1. 在搜索欄中鍵入 %localappdata% 然后轉到此文件夾。
  2. 在這里選擇程序文件夾。 然后選擇 Programs , Python , Python version , Scripts
  3. 復制 Scripts 文件夾的位置
  4. 打開命令提示符並輸入 cd //yourpath(在我的例子中是cd C:\\Users\\3C HOUSE\\AppData\\Local\\Programs\\Python\\Python37\\Scripts
  5. 如果你想安裝 numpy ,現在運行pip install numpy

這是因為安裝了多個 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 的兩個輸出,

  • 端子模塊位置與 IDLE 不同
  • 我在 Windows 機器上使用 Ubuntu 18 終端

所以我只是將我的文件復制到“C”目錄並確保其文件權限。 就是這樣。

  :~$ cp -p /usr/local/lib/python3.6/dist-packages/nester.py /mnt/c/Users/username/AppData/Local/Programs/Python/Python39/Lib/

ModuleNotFoundError 已修復

有效!!

對於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM