關于Python包導入報錯的問題總結
Python包導入報錯的問題
首先,一般來說,寫一個小demo可能一個文件就夠了,但是要是做一個小項目,可能需要拆分成很多零散的文件,放在不同的文件夾里面調用,這個就稱之為模塊(包)
Python的導包是一件令人頭疼的事情,當文件多了之后,同樣的導入方式可能在不同的場合遇到解釋器拋出異常。
錯誤記錄
1. ModuleNotFoundError: No module named ‘public’
ModuleNotFoundError:沒有名為“public”的模塊
模塊間的引用:
錯誤的

正確的方式:

但是如果在里面運行代碼,將會收到
2. ImportError: attempted relative import with no known parent package
ImportError:嘗試在沒有已知父包的情況下進行相對導入
(適合相鄰文件的導入)

如果真想用里面的方法做測試,嘗試
from public import print_date or import public

同樣使用此也會拋出ImportError異常 from utils.public import print_date -> ModuleNotFoundError: No module named 'utils'
但是如果在包外調用包內的方法,又會報錯

這里又需要把
from public import print_date
改回
from .public import print_date
其中 import .public 是不支持的,編輯器也會智能顯示錯誤波浪線
導入之前捕獲異常 ImportError

3. ImportError: attempted relative import beyond top-level package
ImportError:嘗試相對導入超出頂級包 (包內導包外) - 需要在這個層級之上再建立一個文件夾來管理,把現(xiàn)有的文件夾當作子文件夾管理

······
目錄結構(部分文件內容被刪掉了):

關于 __init__.py 文件的作用,當在包外面使用 from xxx imprt * 這中方式導入時,會導入 __all__ = ['app'] 里面的,如果沒有,就不能像下面一樣使用
正常是
# from utils import *
from utils import app
def putfile():
print('test putfile')
if __name__ == '__main__':
app.main_run()
很明顯,這樣不行


4. ImportError: cannot import name ‘print_date’ from partially initialized module ‘utils.public’ (most likely due to a circular import) (D:\xxx\xxx\public.py)
ImportError:無法從部分初始化的模塊“utils.public”導入名稱“print_date”(很可能是由于循環(huán)導入)(D:\xxx\xxx\public.py)
這種情況把真正不依賴當前項目本身(公有變量等)的方法,再提取出來寫到一個文件里面
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python之pyqt5通過按鈕改變Label的背景顏色方法
今天小編就為大家分享一篇python之pyqt5通過按鈕改變Label的背景顏色方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
python3.4下django集成使用xadmin后臺的方法
本篇文章主要介紹了python3.4下django集成使用xadmin后臺的方法,具有一定的參加價值,有興趣的可以了解一下2017-08-08
使用python和opencv的mask實現(xiàn)摳圖疊加
這篇文章主要介紹了使用python和opencv的mask實現(xiàn)摳圖疊加操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
Python函數(shù)之iterrows(),iteritems(),itertuples()的區(qū)別說明
這篇文章主要介紹了Python函數(shù)之iterrows(),iteritems(),itertuples()的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
數(shù)組保存為txt, npy, csv 文件, 數(shù)組遍歷enumerate的方法
今天小編就為大家分享一篇數(shù)組保存為txt, npy, csv 文件, 數(shù)組遍歷enumerate的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python functools.lru_cache裝飾器性能提升利器深入探究
本文將詳細介紹functools.lru_cache裝飾器的原理、用法以及適當?shù)膱鼍?以幫助你更好地利用這一功能,它可以用來緩存函數(shù)的輸出,以避免重復計算,從而顯著提高程序的執(zhí)行速度2024-01-01
Python中使用Opencv開發(fā)停車位計數(shù)器功能
這篇文章主要介紹了Python中使用Opencv開發(fā)停車位計數(shù)器,本教程最好的一點就是我們將使用基本的圖像處理技術來解決這個問題,沒有使用機器學習、深度學習進行訓練來識別,感興趣的朋友跟隨小編一起看看吧2022-04-04

