網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
同級(jí)目錄(兄弟目錄)調(diào)用
看書(shū)看得好好的,一寫(xiě)代碼就出錯(cuò)!!!
這個(gè)問(wèn)題是大家初學(xué)Python的時(shí)候會(huì)遇到的一個(gè)很常見(jiàn)的問(wèn)題,然后我們?nèi)ニ丫W(wǎng)上的教程,自己試一試還是都是BUG,常見(jiàn)的就是這兩個(gè)命令:
ModuleNotFoundError: No module named 'XXXXXXX'
ImportError: attempted relative import with no known parent package
教程一般都是很詳細(xì)的給你分析,然后給你井不同文件的調(diào)用,其實(shí)整那么多沒(méi)事的干嘛是不是,我們要的只是解決辦法。
詳細(xì)解釋
注意
1、我只說(shuō)兄弟的文件夾下面的調(diào)用,父子啥的__init__.py 搜一搜就可以了
2、不要用Vscode ,Vscode的環(huán)境變量你是整不明白的
3、我沒(méi)太多的時(shí)間花費(fèi)在博客上,所以遇到啥才會(huì)去擴(kuò)充啥,大家也可以在下面留言遇到的問(wèn)題和解決的辦法
4、可能我說(shuō)的也會(huì)有錯(cuò)誤,但我主要的是解決我自己遇到的問(wèn)題
開(kāi)始上代碼
目錄結(jié)構(gòu)
a1.py
def a1_print(): print("a1_print OK")
b1.py
from ..a.a1 import a1_print a1_print()
運(yùn)行b1.py,報(bào)錯(cuò)
ImportError: attempted relative import with no known parent package
原因
文件夾被python解釋器視作package需要滿足兩個(gè)條件:
- 文件夾中必須有__init__.py文件,該文件可以為空,但必須存在。不能作為頂層模塊來(lái)執(zhí)行該文件夾中的py文件,即使用…的文件夾外邊還需要有包含__init__.py的文件夾 (即不能作為主函數(shù)的入口)
- 主就是 不能作為主函數(shù)的入口,兄弟引用不能作為入口,意思是你不能直接運(yùn)行b1.py,你可以在c1.py 這樣弄,b1.py 不可以 不可以 不可以
我非要咋解決
修改b1.py
import sys# 加了這了 sys.path.append("..") ## 這個(gè) from a.a1 import a1_print #改了這個(gè) a1_print()
輸出
BUG
Pycharm
我覺(jué)得還是不管它吧,能運(yùn)行就不錯(cuò)了,沒(méi)有啥影響。
不要用Vscode 不要用Vscode 不要用Vscode?
import同級(jí)目錄報(bào)錯(cuò)
pycharm不會(huì)將當(dāng)前文件目錄自動(dòng)加入自己的sourse_path。右鍵make_directory as-->Sources Root將當(dāng)前工作的文件夾加入source_path就可以了。
原文鏈接:https://blog.csdn.net/ym404232992/article/details/115429984
相關(guān)推薦
- 2023-04-29 vscode搭建python?Django網(wǎng)站開(kāi)發(fā)環(huán)境的示例_python
- 2022-12-27 詳解PyQt5?事件處理機(jī)制_python
- 2022-12-24 Kubernetes?ApiServer三大server權(quán)限與數(shù)據(jù)存儲(chǔ)解析_云和虛擬化
- 2022-06-09 FreeRTOS實(shí)時(shí)操作系統(tǒng)的內(nèi)核控制示例解析_操作系統(tǒng)
- 2023-01-19 python圖形界面教程Tkinter詳解_python
- 2022-11-10 Netcore?Webapi返回?cái)?shù)據(jù)的三種方式示例_C#教程
- 2022-12-03 C?++迭代器iterator在string中使用方法介紹_C 語(yǔ)言
- 2022-03-23 shell腳本設(shè)置防止暴力破解ssh_Linux
- 最近更新
-
- 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概述快速入門(mén)
- 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)程分支