Python import導(dǎo)入上級(jí)目錄文件的方法
假設(shè)有如下目錄結(jié)構(gòu):
-- dir0 | file1.py | file2.py | dir3 | file3.py | dir4 | file4.py
dir0文件夾下有file1.py、file2.py兩個(gè)文件和dir3、dir4兩個(gè)子文件夾,dir3中有file3.py文件,dir4中有file4.py文件。
1.導(dǎo)入同級(jí)模塊
python導(dǎo)入同級(jí)模塊(在同一個(gè)文件夾中的py文件)直接導(dǎo)入即可。
import xxx
如在file1.py中想導(dǎo)入file2.py,注意無(wú)需加后綴".py":
import file2 # 使用file2中函數(shù)時(shí)需加上前綴"file2.",即: # file2.fuction_name()
2.導(dǎo)入下級(jí)模塊
導(dǎo)入下級(jí)目錄模塊也很容易,需在下級(jí)目錄中新建一個(gè)空白的__init__.py文件再導(dǎo)入:
from dirname import xxx
如在file1.py中想導(dǎo)入dir3下的file3.py,首先要在dir3中新建一個(gè)空白的__init__.py文件。
-- dir0 | file1.py | file2.py | dir3 | __init__.py | file3.py | dir4 | file4.py
再使用如下語(yǔ)句:
# plan A from dir3 import file3
或是:
# plan B import dir3.file3 # import dir3.file3 as df3
但使用第二種方式則下文需要一直帶著路徑dir3書(shū)寫,較為累贅,建議可以另起一個(gè)別名。
3.導(dǎo)入上級(jí)模塊
要導(dǎo)入上級(jí)目錄下模塊,可以使用sys.path:
import sys
sys.path.append("..")
import xxx 如在file4.py中想引入import上級(jí)目錄下的file1.py:
import sys
sys.path.append("..")
import file1sys.path的作用:當(dāng)使用import語(yǔ)句導(dǎo)入模塊時(shí),解釋器會(huì)搜索當(dāng)前模塊所在目錄以及sys.path指定的路徑去找需要import的模塊,所以這里是直接把上級(jí)目錄加到了sys.path里。
“..”的含義:等同于linux里的‘..’,表示當(dāng)前工作目錄的上級(jí)目錄。實(shí)際上python中的‘.’也和linux中一致,表示當(dāng)前目錄。
4.導(dǎo)入隔壁文件夾下的模塊
如在file4.py中想引入import在dir3目錄下的file3.py。
這其實(shí)是前面兩個(gè)操作的組合,其思路本質(zhì)上是將上級(jí)目錄加到sys.path里,再按照對(duì)下級(jí)目錄模塊的方式導(dǎo)入。
同樣需要被引文件夾也就是dir3下有空的__init__.py文件。
-- dir | file1.py | file2.py | dir3 | __init__.py | file3.py | dir4 | file4.py
同時(shí)也要將上級(jí)目錄加到sys.path里:
import sys
sys.path.append("..")
from dir3 import file35.常見(jiàn)錯(cuò)誤及import原理
在使用直接從上級(jí)目錄引入模塊的操作時(shí):
from .. import xxx
經(jīng)常會(huì)報(bào)錯(cuò):
ValueError: attempted relative import beyond top-level package
這是由于相對(duì)導(dǎo)入時(shí),文件夾實(shí)質(zhì)上充當(dāng)?shù)氖莗ackage,也就是包的角色(比如我們常用的numpy、pandas都是包)。如果python解釋器沒(méi)有認(rèn)同該文件夾是package,那么這就是一個(gè)普通的文件夾,無(wú)法實(shí)現(xiàn)相對(duì)導(dǎo)入。
文件夾作為package需要滿足如下兩個(gè)條件:
文件夾中必須存在有__init__.py文件,可以為空。
不能作為頂層模塊來(lái)執(zhí)行該文件夾中的py文件。
到此這篇關(guān)于Python import導(dǎo)入上級(jí)目錄文件的文章就介紹到這了,更多相關(guān)Python import導(dǎo)入上級(jí)目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中easy_install 和 pip 的安裝及使用
本篇文章主要介紹了Python中easy_install 和 pip 的安裝及使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
解決webdriver.Chrome()報(bào)錯(cuò):Message:''chromedriver'' executable n
這篇文章主要介紹了解決webdriver.Chrome()報(bào)錯(cuò):Message:'chromedriver' executable needs to be in Path ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
python實(shí)現(xiàn)將Word文檔中的文字轉(zhuǎn)換成語(yǔ)音的操作步驟
在Python中實(shí)現(xiàn)文字轉(zhuǎn)語(yǔ)音(Text-to-Speech, TTS)功能,能夠廣泛應(yīng)用于多種場(chǎng)景,如語(yǔ)音助手、有聲讀物、無(wú)障礙閱讀等,本文將結(jié)合具體案例,詳細(xì)介紹如何在Python中實(shí)現(xiàn)文字轉(zhuǎn)語(yǔ)音功能,需要的朋友可以參考下2024-08-08
Kmeans均值聚類算法原理以及Python如何實(shí)現(xiàn)
這個(gè)算法中文名為k均值聚類算法,首先我們?cè)诙S的特殊條件下討論其實(shí)現(xiàn)的過(guò)程,方便大家理解。2020-09-09
Python+Tkinter實(shí)現(xiàn)軟件自動(dòng)更新與提醒
這篇文章主要為大家詳細(xì)介紹了Python如何利用Tkinter編寫一個(gè)軟件自動(dòng)更新與提醒小程序,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以動(dòng)手嘗試一下2023-07-07
Anaconda+Pycharm環(huán)境下的PyTorch配置方法
這篇文章主要介紹了Anaconda+Pycharm環(huán)境下的PyTorch配置方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
python二維鍵值數(shù)組生成轉(zhuǎn)json的例子
今天小編就為大家分享一篇python二維鍵值數(shù)組生成轉(zhuǎn)json的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析
這篇文章主要介紹了向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

