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