1. 程式人生 > >python專案在cmd中執行出現ImportError: No module named xxx總結

python專案在cmd中執行出現ImportError: No module named xxx總結

網上關於這個問題已經有很成熟的解答,這裡做一個總結提醒自己,也算提醒後來人。

比如,我有一個python專案,目錄結構如下:

python_project

    util

        a.py

        b.py

    mail

        c.py

程式執行入口是a.py,也就是說,在專案中,使用pycharm只需要在a.py右鍵run就可以驅動程式執行。但是,如果在cmd中執行python a.py可能會出現ImportError: No module named mail的問題。

一、首先需要解釋一下為什麼在pycharm裡面可以執行,而在cmd中就會報錯的問題。

pycharm是一個優秀的python編輯器,它會自動把當前專案下的檔案自動引入到需要的地方,也就是說,a.py中依賴的所有本專案在pycharm中都會預設自動引入,但是,cmd沒有這麼智慧,命令列只能識別配置好的環境變數和當前檔案路徑,至於當前檔案所依賴的本專案其他檔案不會自動引入,因此,在命令列中呼叫a.py會報引入包錯誤。

二、既然我們已經知道問題出在哪裡了,那麼,如何解決這個問題呢。

解決的方法也不復雜,就是在程式的入口也就是a.py中將本專案中依賴的其他檔案路徑新增進path環境變數即可。具體怎麼操作呢,一個比較好的解決思路是在本程式(a.py)開頭輸入這麼一行資訊

import sys

print(sys.path)

通過這兩條語句,就會把當前檔案(a.py)所有依賴的路徑打印出來,然後再在當前檔案最前面新增這麼一條語句

sys.path.append("剛剛打印出來的依賴的路徑")

打印出幾個就需要append幾下。這個地方需要注意,並不是說所有打印出來的都需要append,跟python環境變數相關的路徑可以不用append,比如python.exe所在的目錄(因為在path環境變數已經添加了)

三、很開心的在cmd中執行python  a.py,程式就可以跑起來了。

宣告:

本文並非作者原創,是在前人的基礎上整理出來的,參考連結

https://blog.csdn.net/liujingqiu/article/details/79213457,在此謝謝此博主。