調(diào)用自定義模塊出現(xiàn)ModuleNotFoundError的問題

Python會在以下路徑中搜索它想要尋找的模塊:

1,程序所在的文件夾

2,標(biāo)準(zhǔn)庫的安裝路徑

3,操作系統(tǒng)環(huán)境變量PYTHONPATH所包含的路徑

產(chǎn)生問題的原因可能是:IDE(我使用的是Pycharm)沒有將當(dāng)前目錄添加到工作目錄中,導(dǎo)致了在搜索的目錄中找不到要調(diào)用的模塊。

解決方法1:在調(diào)用自定義模塊前先將程序所在的目錄添加到工作目錄中

例如這里的preprocess.py是我們自定義的模塊,已經(jīng)將其放在同一目錄下

import sys

sys.path.append(程序所在路徑)

import preprocess

解決方法2:在Pycharm中創(chuàng)建NewProject,將調(diào)用程序與被調(diào)用程序放在同一個Project中。

此時Pycharm會自動生成.idea和__pycache__兩個文件夾,模塊的調(diào)用應(yīng)該和這個有關(guān),然后在程序中直接調(diào)用自定義的模塊就可以了。

使用vscode來寫python程序的時候會出現(xiàn)模塊找不到的問題。

紅色劃線部分是調(diào)用的python解析器的位置??赡茉谟胮ycharm調(diào)用的時候這些模塊都是能正常使用的。但是,為什么到了vscode這兒就出問題了呢?

首先,讓我們來看看現(xiàn)在有哪些模塊,在命令行終端輸入conda list。


可以看見torch模塊確實已經(jīng)安裝了,不過請注意后面還有個pypi。pypi是指這個模塊是通過pip安裝的,而不是通過conda安裝。所以模塊無法調(diào)用的原因就在這兒。

解決方法比較簡單粗暴,在選擇python解析器的時候選擇conda base版本的就OK了。在這個解析器下,即使是pip安裝的模塊也可以照常使用。


原理

1、因為默認的路徑不在根目錄了,而以當(dāng)前運行的程序文件夾為根目錄

2、如果在當(dāng)前文件目錄底下可以找到導(dǎo)入的包,那么可以直接使用from … import …

3、如果在當(dāng)前文件目錄底下找不到導(dǎo)入的包,則需要向sys.path添加包的所在的絕對位置。


最后補充一下我的問題是怎么解決的:

在了解了路徑原理之后,仔細核對了出問題的路徑之后,發(fā)現(xiàn)from … import …的時候,from目錄不是從根目錄開始的,修改之后修復(fù)bug

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容