千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Python相對路徑導(dǎo)入陷阱

Python相對路徑導(dǎo)入陷阱

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-11-07 14:45:58 1699339558

一個相對路徑導(dǎo)入時的錯誤:

from..dir3importb2

ValueError:attemptedrelativeimportbeyondtop-levelpackage

dir3明明在dir1下,在路徑相對上,dir3確實(shí)是a1.py的../dir3,但執(zhí)行pythona1.py為什么會報錯?

from..dir3importb2

這是因?yàn)槲募到y(tǒng)路徑并不真的代表包的相對路徑,當(dāng)在dir1/a1.py中使用..dir3,python并不知道包dir1的存在,因?yàn)闆]有將它導(dǎo)入,沒有聲明為模塊變量,同樣,也不知道dir2的存在,僅僅只是根據(jù)語句知道了dir3的存在。但因?yàn)槭褂昧讼鄬β窂剑粫阉鱯ys.path,所以它的相對路徑邊界只在本文件。所以,下面的導(dǎo)入也是錯誤的:

from.importa2

實(shí)際上,更標(biāo)準(zhǔn)的解釋是,當(dāng)py文件作為可執(zhí)行程序文件執(zhí)行時,它所在的模塊名為__main__,即__name__為__main__,但它并非一個包,而是一個模塊文件,對它來說沒有任何相對路徑可言。

解決方法是顯式導(dǎo)入它們的父包,讓python記錄它的存在,只有這樣才能使用..:

python-mdir1.dir2.a2

還有幾個常見的相對路徑導(dǎo)入錯誤:

from.a3importx

錯誤:

ModuleNotFoundError:Nomodulenamed'__main__.a3';'__main__'isnotapackage

原因是一樣的,py文件作為可執(zhí)行程序文件執(zhí)行時,它所在的模塊名為__main__,它并非一個包。

最后,建議在條件允許的情況下,使用絕對路徑導(dǎo)入,而不是相對路徑。

以上內(nèi)容為大家介紹了Python相對路徑導(dǎo)入陷阱,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Python裝飾器?的寫法以及應(yīng)用場景

含義:裝飾器本質(zhì)就是函數(shù),為其他函數(shù)添加附加功能原則:不修改被修飾函數(shù)的代碼不修改被修飾函數(shù)的調(diào)用方式應(yīng)用場景:無參裝飾器在用戶登錄認(rèn)...詳情>>

2023-11-07 17:38:46
Python粘包

什么是粘包?socket中造成粘包的原因是什什么?哪些情況會發(fā)生粘包現(xiàn)象?只有TCP有粘包現(xiàn)象,UDP永遠(yuǎn)不會粘包粘包:在獲取數(shù)據(jù)時,出現(xiàn)數(shù)據(jù)的內(nèi)容不...詳情>>

2023-11-07 17:35:10
Python之select、poll、epoll模型的區(qū)別

select、poll、epoll模型的區(qū)別?(屬于多路復(fù)用IO的模型)都是i/o多路復(fù)用的機(jī)制,監(jiān)視多個socket是否發(fā)生變化,本質(zhì)上都是同步i/oselect,poll實(shí)...詳情>>

2023-11-07 17:31:34
Python進(jìn)程、線程、協(xié)程的區(qū)別

簡述進(jìn)程、線程、協(xié)程的區(qū)別以及應(yīng)用場景?線程是指進(jìn)程內(nèi)的一個執(zhí)行單元,#進(jìn)程進(jìn)程擁有自己獨(dú)立的堆和棧,既不共享堆,亦不共享?xiàng)#M(jìn)程由操作...詳情>>

2023-11-07 17:27:58
簡述Python數(shù)據(jù)庫三大范式?

python數(shù)據(jù)庫的三大特性:'實(shí)體':表'屬性':表中的數(shù)據(jù)(字段)'關(guān)系':表與表之間的關(guān)系----------------------------...詳情>>

2023-11-07 17:24:22
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
中文字幕亚洲日韩乱字幕 | 日韩免费码中文在线观看 | 日韩专码一区二区 | 亚洲日韩在线中文字幕一区 | 午夜在线a亚洲v天堂网2019 | 在线点播亚洲日韩国产欧美 |