命令行運行python顯示no module named xxx的解決方案


1. 問題

在pycharm里面編寫python代碼,引用了自己的模塊。在pycharm里面沒顯示異常,但在終端(命令行)執行時顯示no module named xxx(引用的自己的模塊)

為什么在pychrarm里就沒問題,到終端就找不到了呢?

ImportError: No module named 'xxx'

2. 解決思路

  • 當解釋器遇到 import 語句,如果模塊在當前的搜索路徑就會被導入。搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。

  • 當你導入一個模塊,Python 解析器對模塊位置的搜索順序是:

    1. 當前目錄

    2. 如果不在當前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個目錄。

    3. 如果都找不到,Python會察看默認路徑。

    模塊搜索路徑存儲在 system 模塊的 sys.path 變量中。變量里包含當前目錄,PYTHONPATH和由安裝過程決定的默認目錄。

  • 可以想到pycharm的sys.path和系統默認的是不是有什么區別?

    1. 查看系統的sys.path(在Python Console輸入)

      import sys
      print(sys.path)
      
    2. 查看pycharm的sys.path(在pycharm中新建py文件並執行)

      import sys
      print(sys.path)
      
    3. 比較兩者的輸出可以發現:

      Pycharm的默認路徑包含 Project 目錄,而終端的輸出不包含。也就解釋了為什么在 pycharm 里面可以執行,在 terminal 終端里面就會出現 no module name xxx的錯誤。

3. 解決方案一(永久)

  1. 在 site-packages 文件中增加 Pycharm 文件路徑。(windows)

    cd C:\Users\UserName\AppData\Local\Programs\Python\Python38\Lib\site-packages

  2. 修改(或新建)pycharm.pth

    C:\Users\UserName\PycharmProjects  // 在里面加上你的項目目錄 
    

4. 解決方案二(暫時)

  1. 在引用你的模塊的時候在前面添加
    import sys
    sys.path.append('你的項目名稱')
    

5. 測試

我反正測試成功,能在終端正常執行了。-_-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM