當(dāng)你在一個(gè) Python 文件中導(dǎo)入一個(gè)模塊時(shí),Python 試圖通過(guò)幾種方式來(lái)處理這個(gè)模塊。有時(shí),Python 會(huì)在之后拋出 ModuleNotFoundError。這個(gè)錯(cuò)誤在 Python 中是什么意思?
顧名思義,當(dāng)你試圖訪問(wèn)或使用一個(gè)找不到的模塊時(shí)就會(huì)發(fā)生這個(gè)錯(cuò)誤。以標(biāo)題為例,找不到“名為 Python 的模塊”。
這里的 Python 可以是任何模塊。當(dāng)我試圖導(dǎo)入一個(gè)找不到的 numpys 模塊時(shí),會(huì)出現(xiàn)下面這個(gè)錯(cuò)誤:
import numpys as np
錯(cuò)誤是這樣的:
以下是一些可能找不到模塊的原因:
你的電腦上沒(méi)有安裝你想導(dǎo)入的模塊
你對(duì)模塊的拼寫(xiě)不正確(這仍然與前一點(diǎn)有關(guān),即拼寫(xiě)錯(cuò)誤的模塊沒(méi)有安裝)…例如,在導(dǎo)入時(shí)將 numpy 拼成 numpys
你對(duì)一個(gè)模塊使用了不正確的大小寫(xiě)(這仍然與第一點(diǎn)有關(guān))…例如,在導(dǎo)入過(guò)程中把 numpy 拼成 NumPy,就會(huì)出現(xiàn)找不到模塊的錯(cuò)誤,因?yàn)檫@兩個(gè)模塊是不一樣的
你使用錯(cuò)誤的路徑導(dǎo)入了一個(gè)模塊
如何解決 Python 中的 ModuleNotFoundError 問(wèn)題
正如我在上一節(jié)中提到的,有幾個(gè)原因可能導(dǎo)致找不到模塊。下面是一些解決方案。
1.確保導(dǎo)入的模塊已經(jīng)安裝
以 numpy 為例。你在你的代碼中,在一個(gè)叫作 “test.py” 的文件中使用這個(gè)模塊,像這樣:
import numpy as np
arr = np.array([1, 2, 3])
print(arr)
如果你試圖用 python test.py 運(yùn)行這段代碼,會(huì)得到這個(gè)錯(cuò)誤:
ModuleNotFoundError: No module named "numpy"
那么很有可能是你的設(shè)備上沒(méi)有安裝 numpy 模塊。你可以這樣安裝該模塊:
python -m pip install numpy
安裝后,之前的代碼將正確工作,終端將打印結(jié)果:
[1, 2, 3]
2.確保模塊的拼寫(xiě)正確
在某些情況下,你可能已經(jīng)安裝了你需要的模塊,但試圖使用它時(shí)仍然會(huì)出現(xiàn) ModuleNotFound 錯(cuò)誤。在這種情況下,可能是你的拼寫(xiě)不正確。以這段代碼為例:`
import nompy as np
arr = np.array([1, 2, 3])
print(arr)
在這里,你已經(jīng)安裝了 numpy,但運(yùn)行上述代碼會(huì)出現(xiàn)這個(gè)錯(cuò)誤:
ModuleNotFoundError: No module named "nompy"
This error comes as a result of the misspelled numpy module as nompy (with the letter o instead of u). You can fix this error by spelling the module correctly.
3. 確保模塊的大小寫(xiě)正確
與模塊未找到錯(cuò)誤的拼寫(xiě)問(wèn)題類似,也可能是你的模塊拼寫(xiě)正確,但用錯(cuò)了大小寫(xiě)。這里有一個(gè)例子:
import Numpy as np
arr = np.array([1, 2, 3])
print(arr)
對(duì)于這段代碼,你已經(jīng)安裝了 numpy,但運(yùn)行上述代碼會(huì)出現(xiàn)這個(gè)錯(cuò)誤:
ModuleNotFoundError: No module named 'Numpy'
由于大小寫(xiě)的不同,numpy 和 Numpy 是不同的模塊。你可以通過(guò)用正確的大小寫(xiě)拼寫(xiě)模塊來(lái)解決這個(gè)錯(cuò)誤。
4.確保你使用正確的路徑
在 Python 中,你可以使用絕對(duì)路徑或相對(duì)路徑從其他文件導(dǎo)入模塊。在這個(gè)例子中,我將著重介紹絕對(duì)路徑。
當(dāng)你試圖從錯(cuò)誤的路徑訪問(wèn)一個(gè)模塊時(shí),你也會(huì)得到這里找不到模塊的結(jié)果。這里有一個(gè)例子:
假設(shè)你有一個(gè)名為 test 的項(xiàng)目文件夾。在它里面,你有兩個(gè)文件夾 demoA 和 demoB。
demoA 有一個(gè) init.py 文件(以顯示它是一個(gè) Python 包)和一個(gè) test1.py 模塊。
demoA 也有一個(gè) init.py 文件和一個(gè) test2.py 模塊。
結(jié)構(gòu)如下:
└── test
├── demoA
├── __init__.py
│ ├── test1.py
└── demoB
├── __init__.py
├── test2.py
這是 test1.py 的內(nèi)容:
def hello():
print("hello")
假設(shè)你想在 test2.py 中使用這個(gè)聲明的 hello 函數(shù)。下面的代碼將拋出一個(gè)未找到模塊的錯(cuò)誤:
import demoA.test as test1
test1.hello()
代碼將拋出以下錯(cuò)誤:
ModuleNotFoundError: No module named 'demoA.test'
其原因是我們使用了錯(cuò)誤的路徑來(lái)訪問(wèn) test1 模塊。正確的路徑應(yīng)該是 demoA.test1。當(dāng)你糾正了這一點(diǎn),代碼就可以運(yùn)行了:
import demoA.test1 as test1
test1.hello()
# hello
我的職業(yè)生涯開(kāi)始和大多數(shù)碼農(nóng)一樣,剛開(kāi)始接觸都是最基礎(chǔ)的軟件測(cè)試、編程語(yǔ)法。那時(shí)候在B站CSDN到處找學(xué)習(xí)資源,在這個(gè)吃技術(shù)的IT行業(yè)來(lái)說(shuō),不斷學(xué)習(xí)是至關(guān)重要的。但是我之前做的是最基礎(chǔ)的業(yè)務(wù)工作,隨著時(shí)間的消磨,讓我產(chǎn)生了對(duì)自我價(jià)值和崗位意義的困惑。
我的程序員之路,一路走來(lái)都離不開(kāi)每個(gè)階段的計(jì)劃,因?yàn)樽约合矚g規(guī)劃和總結(jié),所以,我和朋友特意花了一段時(shí)間整理編寫(xiě)了下面的《python架構(gòu)師學(xué)習(xí)路線》,也整理了不少【網(wǎng)盤(pán)資源】,需要的朋友可以公眾號(hào)【Python大本營(yíng)】獲取網(wǎng)盤(pán)鏈接。
希望會(huì)給你帶來(lái)幫助和方向。
總結(jié)
為了處理一個(gè)導(dǎo)入的模塊,Python 檢查像內(nèi)置庫(kù)、已安裝的模塊和當(dāng)前項(xiàng)目中的模塊這樣的地方。如果它不能處理這個(gè)模塊,它就會(huì)拋出 ModuleNotFoundError。
有時(shí)你沒(méi)有安裝那個(gè)模塊,所以你必須安裝它。有時(shí)是模塊拼寫(xiě)錯(cuò)誤,或命名時(shí)用了錯(cuò)誤的大小寫(xiě),或路徑錯(cuò)誤。在這篇文章中,我展示了如果你遇到這種錯(cuò)誤的四種可能的修復(fù)方法。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-812597.html
我希望你能從文章中得到啟發(fā):)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-812597.html
到了這里,關(guān)于ModuleNotFoundError:如何解決 no module named Python 錯(cuò)誤?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!