python 服務(wù)器運(yùn)行代碼報錯ModuleNotFoundError的解決辦法
一、問題描述
一段 Python 代碼在本地的 IDE 上運(yùn)行正常,部署到服務(wù)器運(yùn)行后,出現(xiàn)了 ModuleNotFoundError: No module named ‘xxx’ 錯誤。
二、問題原因
在代碼中引入了其他文件的包(自己寫的包,非 pip 安裝的),問題出在 import 那行語句。
錯誤的原因是因為路徑的原因,服務(wù)器端的路徑和我們本地的路徑不一樣顯示。
三、解決示例
要解決這個問題,可以在自己代碼的頂端加入以下代碼:
import sysimport ossys.path.append(os.path.dirname(sys.path[0]))
或者
import sysimport osBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.insert(0, BASE_DIR)
以上代碼可以保證在任何時候都切換到當(dāng)前執(zhí)行腳本所在目錄中,具體根據(jù)自己腳本所在的目錄結(jié)構(gòu)進(jìn)行調(diào)整。
四、sys.path.append() 和 sys.path.insert()
Python 程序中使用 import xxx 時,Python 解析器會在當(dāng)前目錄、已安裝和第三方模塊中搜索 xxx,如果都搜索不到就會報錯。
sys.path 模塊可以動態(tài)的修改系統(tǒng)路徑,這種方法導(dǎo)入的路徑會在 Python 程序退出后失效。
sys.path 本身是個列表,所以在里面添加目錄是很容易的,添加完后,新目錄即時起效,以后的每次 import 操作都可能會檢查這個目錄。
1. sys.path.append()
在 sys.path 列表的末尾臨時添加搜索路徑,方便更簡潔的 import 其他包和模塊。這種方法導(dǎo)入的路徑會在 Python 程序退出后失效。
示例:
import syssys.path.append(’..’) # 表示導(dǎo)入當(dāng)前文件的上層目錄到搜索路徑中sys.path.append(’/home/model’) # 絕對路徑from folderA.folderB.fileA import functionA
2. sys.path.insert()
可以定義搜索優(yōu)先順序,序號從 0 開始,表示最大優(yōu)先級,sys.path.insert() 加入的也是臨時搜索路徑,程序退出后失效。
示例:
import syssys.path.insert(1, './model')
以上就是python 服務(wù)器運(yùn)行代碼報錯ModuleNotFoundError的解決辦法的詳細(xì)內(nèi)容,更多關(guān)于python 代碼報錯的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. .NET SkiaSharp 生成二維碼驗證碼及指定區(qū)域截取方法實(shí)現(xiàn)2. css代碼優(yōu)化的12個技巧3. HTTP協(xié)議常用的請求頭和響應(yīng)頭響應(yīng)詳解說明(學(xué)習(xí))4. idea設(shè)置提示不區(qū)分大小寫的方法5. CentOS郵件服務(wù)器搭建系列—— POP / IMAP 服務(wù)器的構(gòu)建( Dovecot )6. ASP.NET MVC通過勾選checkbox更改select的內(nèi)容7. Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)8. IntelliJ IDEA創(chuàng)建web項目的方法9. django創(chuàng)建css文件夾的具體方法10. 原生JS實(shí)現(xiàn)記憶翻牌游戲
