python modulenotfounderror_python 服务器运行代码报错ModuleNotFoundError的解决办法
一、問題描述
一段 Python 代碼在本地的 IDE 上運行正常,部署到服務器運行后,出現了 ModuleNotFoundError: No module named ‘xxx" 錯誤。
二、問題原因
在代碼中引入了其他文件的包(自己寫的包,非 pip 安裝的),問題出在 import那行語句。
錯誤的原因是因為路徑的原因,服務器端的路徑和我們本地的路徑不一樣顯示。
三、解決示例
要解決這個問題,可以在自己代碼的頂端加入以下代碼:
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)
以上代碼可以保證在任何時候都切換到當前執行腳本所在目錄中,具體根據自己腳本所在的目錄結構進行調整。
四、sys.path.append() 和 sys.path.insert()
Python 程序中使用 import xxx時,Python 解析器會在當前目錄、已安裝和第三方模塊中搜索 xxx,如果都搜索不到就會報錯。
sys.path 模塊可以動態的修改系統路徑,這種方法導入的路徑會在 Python 程序退出后失效。
sys.path 本身是個列表,所以在里面添加目錄是很容易的,添加完后,新目錄即時起效,以后的每次import操作都可能會檢查這個目錄。
1. sys.path.append()
在 sys.path列表的末尾臨時添加搜索路徑,方便更簡潔的 import其他包和模塊。這種方法導入的路徑會在 Python 程序退出后失效。
示例:
import sys
sys.path.append("..") # 表示導入當前文件的上層目錄到搜索路徑中
sys.path.append("/home/model") # 絕對路徑
from folderA.folderB.fileA import functionA
2. sys.path.insert()
可以定義搜索優先順序,序號從 0 開始,表示最大優先級,sys.path.insert()加入的也是臨時搜索路徑,程序退出后失效。
示例:
import sys
sys.path.insert(1, "./model")
以上就是python 服務器運行代碼報錯ModuleNotFoundError的解決辦法的詳細內容,更多關于python 代碼報錯的資料請關注云海天教程其它相關文章!
原文鏈接:https://www.wenyuanblog.com/blogs/python-module-not-found-error-in-server.html
總結
以上是生活随笔為你收集整理的python modulenotfounderror_python 服务器运行代码报错ModuleNotFoundError的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统驱动全吗,linux系统需
- 下一篇: x5内核有什么优点_接上U盘就是NAS私