python 服務(wù)器運(yùn)行代碼報(bào)錯(cuò)ModuleNotFoundError的解決辦法
一、問(wèn)題描述
一段 Python 代碼在本地的 IDE 上運(yùn)行正常,部署到服務(wù)器運(yùn)行后,出現(xiàn)了 ModuleNotFoundError: No module named ‘xxx' 錯(cuò)誤。
二、問(wèn)題原因
在代碼中引入了其他文件的包(自己寫(xiě)的包,非 pip 安裝的),問(wèn)題出在 import
那行語(yǔ)句。
錯(cuò)誤的原因是因?yàn)槁窂降脑?,服?wù)器端的路徑和我們本地的路徑不一樣顯示。
三、解決示例
要解決這個(gè)問(wèn)題,可以在自己代碼的頂端加入以下代碼:
import sys import os sys.path.append(os.path.dirname(sys.path[0]))
或者
import sys import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, BASE_DIR)
以上代碼可以保證在任何時(shí)候都切換到當(dāng)前執(zhí)行腳本所在目錄中,具體根據(jù)自己腳本所在的目錄結(jié)構(gòu)進(jìn)行調(diào)整。
四、sys.path.append() 和 sys.path.insert()
Python 程序中使用 import xxx
時(shí),Python 解析器會(huì)在當(dāng)前目錄、已安裝和第三方模塊中搜索 xxx,如果都搜索不到就會(huì)報(bào)錯(cuò)。
sys.path
模塊可以動(dòng)態(tài)的修改系統(tǒng)路徑,這種方法導(dǎo)入的路徑會(huì)在 Python 程序退出后失效。
sys.path
本身是個(gè)列表,所以在里面添加目錄是很容易的,添加完后,新目錄即時(shí)起效,以后的每次 import
操作都可能會(huì)檢查這個(gè)目錄。
1. sys.path.append()
在 sys.path
列表的末尾臨時(shí)添加搜索路徑,方便更簡(jiǎn)潔的 import
其他包和模塊。這種方法導(dǎo)入的路徑會(huì)在 Python 程序退出后失效。
示例:
import sys sys.path.append('..') # 表示導(dǎo)入當(dāng)前文件的上層目錄到搜索路徑中 sys.path.append('/home/model') # 絕對(duì)路徑 from folderA.folderB.fileA import functionA
2. sys.path.insert()
可以定義搜索優(yōu)先順序,序號(hào)從 0 開(kāi)始,表示最大優(yōu)先級(jí),sys.path.insert()
加入的也是臨時(shí)搜索路徑,程序退出后失效。
示例:
import sys sys.path.insert(1, "./model")
以上就是python 服務(wù)器運(yùn)行代碼報(bào)錯(cuò)ModuleNotFoundError的解決辦法的詳細(xì)內(nèi)容,更多關(guān)于python 代碼報(bào)錯(cuò)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
django的autoreload機(jī)制實(shí)現(xiàn)
這篇文章主要介紹了django的autoreload機(jī)制實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Python一鍵查找iOS項(xiàng)目中未使用的圖片、音頻、視頻資源
這篇文章主要介紹了Python-一鍵查找iOS項(xiàng)目中未使用的圖片、音頻、視頻資源,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-08-08Python實(shí)例之wxpython中Frame使用方法
本文介紹下wxpython中Frame的用法,不錯(cuò)的python編程實(shí)例,有需要的朋友參考下2014-06-06Python實(shí)現(xiàn)自定義Jupyter魔法命令
相信大家都用過(guò)?jupyter,也用過(guò)里面的魔法命令,這些魔法命令都以%或者%%開(kāi)頭。用法還是比較簡(jiǎn)單的,但是我們能不能自定義魔法命令呢?本文就來(lái)教大家如何自定義Jupyter魔法命令2022-08-08python列表:開(kāi)始、結(jié)束、步長(zhǎng)值實(shí)例
這篇文章主要介紹了python列表:開(kāi)始、結(jié)束、步長(zhǎng)值實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05Python腳本破解壓縮文件口令實(shí)例教程(zipfile)
這篇文章主要給大家介紹了關(guān)于Python腳本破解壓縮文件口令(zipfile)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Django實(shí)現(xiàn)登錄隨機(jī)驗(yàn)證碼的示例代碼
登錄驗(yàn)證碼是每個(gè)網(wǎng)站登錄時(shí)的基本標(biāo)配,這篇文章主要介紹了Django實(shí)現(xiàn)登錄隨機(jī)驗(yàn)證碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Pyramid Mako模板引入helper對(duì)象的步驟方法
ylons中的mako模板,默認(rèn)會(huì)引入一個(gè)helper對(duì)象,我們可以在里面擴(kuò)展方法,應(yīng)對(duì)在模板輸出時(shí)候會(huì)常用的操作,那么在Pyramid中如何默認(rèn)引入同樣的輔助類到模板中2013-11-11