網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Python包導(dǎo)入報(bào)錯(cuò)的問(wèn)題
首先,一般來(lái)說(shuō),寫一個(gè)小demo可能一個(gè)文件就夠了,但是要是做一個(gè)小項(xiàng)目,可能需要拆分成很多零散的文件,放在不同的文件夾里面調(diào)用,這個(gè)就稱之為模塊(包)
Python的導(dǎo)包是一件令人頭疼的事情,當(dāng)文件多了之后,同樣的導(dǎo)入方式可能在不同的場(chǎng)合遇到解釋器拋出異常。
錯(cuò)誤記錄
1. ModuleNotFoundError: No module named ‘public’
ModuleNotFoundError:沒(méi)有名為“public”的模塊
模塊間的引用:
錯(cuò)誤的
正確的方式:
但是如果在里面運(yùn)行代碼,將會(huì)收到
2. ImportError: attempted relative import with no known parent package
ImportError:嘗試在沒(méi)有已知父包的情況下進(jìn)行相對(duì)導(dǎo)入
(適合相鄰文件的導(dǎo)入)
如果真想用里面的方法做測(cè)試,嘗試
from public import print_date or import public
同樣使用此也會(huì)拋出ImportError
異常 from utils.public import print_date
->
ModuleNotFoundError: No module named 'utils'
但是如果在包外調(diào)用包內(nèi)的方法,又會(huì)報(bào)錯(cuò)
這里又需要把
from public import print_date
改回
from .public import print_date
其中 import .public
是不支持的,編輯器也會(huì)智能顯示錯(cuò)誤波浪線
導(dǎo)入之前捕獲異常 ImportError
3. ImportError: attempted relative import beyond top-level package
ImportError:嘗試相對(duì)導(dǎo)入超出頂級(jí)包 (包內(nèi)導(dǎo)包外) - 需要在這個(gè)層級(jí)之上再建立一個(gè)文件夾來(lái)管理,把現(xiàn)有的文件夾當(dāng)作子文件夾管理
······
目錄結(jié)構(gòu)(部分文件內(nèi)容被刪掉了):
關(guān)于 __init__.py
文件的作用,當(dāng)在包外面使用 from xxx imprt *
這中方式導(dǎo)入時(shí),會(huì)導(dǎo)入 __all__ = ['app']
里面的,如果沒(méi)有,就不能像下面一樣使用
正常是
# 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:無(wú)法從部分初始化的模塊“utils.public”導(dǎo)入名稱“print_date”(很可能是由于循環(huán)導(dǎo)入)(D:\xxx\xxx\public.py)
這種情況把真正不依賴當(dāng)前項(xiàng)目本身(公有變量等)的方法,再提取出來(lái)寫到一個(gè)文件里面
總結(jié)
原文鏈接:https://blog.csdn.net/qq_34580627/article/details/125234401
相關(guān)推薦
- 2022-04-22 element的el-drawer預(yù)留操作欄問(wèn)題
- 2024-07-18 MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- 2022-08-17 go?Cobra命令行工具入門教程_Golang
- 2022-12-29 React中事件的類型定義方式_React
- 2022-06-20 一文帶你掌握Go語(yǔ)言運(yùn)算符的使用_Golang
- 2022-06-26 React?Native?加載H5頁(yè)面的實(shí)現(xiàn)方法_React
- 2022-03-31 C語(yǔ)言中冒泡排序算法詳解_C 語(yǔ)言
- 2022-11-13 C語(yǔ)言快速掌握位段使用_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支