關于Python包導入報錯的問題總結
Python包導入報錯的問題
首先,一般來說,寫一個小demo可能一個文件就夠了,但是要是做一個小項目,可能需要拆分成很多零散的文件,放在不同的文件夾里面調(diào)用,這個就稱之為模塊(包)
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'
但是如果在包外調(diào)用包內(nèi)的方法,又會報錯

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

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

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

關于 __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:pycharm中虛擬環(huán)境venv的使用及說明
文章介紹了虛擬環(huán)境的必要性和實踐方法,虛擬環(huán)境可以幫助用戶管理不同項目所需的Python版本和第三方模塊,避免版本沖突和模塊沖突,文章詳細介紹了如何使用Python自帶的`venv`模塊創(chuàng)建和管理虛擬環(huán)境,并通過命令行和PyCharm兩種方式構建虛擬環(huán)境2025-01-01
python 中os模塊os.path.exists()的用法說明
這篇文章主要介紹了python 中os模塊os.path.exists()的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Django在視圖中使用表單并和數(shù)據(jù)庫進行數(shù)據(jù)交互的實現(xiàn)
本文主要介紹了Django在視圖中使用表單并和數(shù)據(jù)庫進行數(shù)據(jù)交互,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07
手把手教你如何使python變?yōu)榭蓤?zhí)行文件
對于exe可執(zhí)行文件,相信大家都不陌生,下面這篇文章主要給大家介紹了關于如何使python變?yōu)榭蓤?zhí)行文件的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-02-02

