Python在不同目錄下導(dǎo)入模塊的實(shí)現(xiàn)方法
python在不同層級(jí)目錄import模塊的方法
使用python進(jìn)行程序編寫時(shí),經(jīng)常會(huì)調(diào)用不同目錄下的模塊及函數(shù)。本篇博客針對(duì)常見的模塊調(diào)用講解導(dǎo)入模塊的方法。
1. 同級(jí)目錄下的調(diào)用
目錄結(jié)構(gòu)如下:
– src |– mod1.py |– test1.py
若在程序test1.py中導(dǎo)入模塊mod1, 則直接使用
2. 調(diào)用子
*import mod1*或from mod1 import *;
目錄下的模塊
目錄結(jié)構(gòu)如下:
– src |– mod1.py |– lib | |– mod2.py |– test1.py
這時(shí),如果想在程序test1.py中導(dǎo)入模塊mod2.py ,可以在lib件夾中建立空文件__init__.py文件
新的目錄結(jié)構(gòu)如下:
– src |– mod1.py |– lib | |–__init__.py | |– mod2.py |– test1.py
然后使用:
from lib.mod2 import *或import lib.mod2.
3. 調(diào)用上級(jí)目錄下的文件
目錄結(jié)構(gòu)如下:
– src |– mod1.py |– lib | |– mod2.py |– sub | |– test2.py
這里想要實(shí)現(xiàn)test2.py調(diào)用mod1.py和mod2.py ,做法是我們先跳到src目錄下面,直接可以調(diào)用mod1,然后在lib上當(dāng)下建一個(gè)空文件__init__.py ,就可以像第二步調(diào)用子目錄下的模塊一樣,通過import lib.mod2進(jìn)行調(diào)用了。具體代碼如下:
import sys sys.path.append('C:\\test\\A\\C') import mod1 import lib.mod2
需要注意的一點(diǎn)是:sys.path添加目錄時(shí)注意是在windows還是在Linux下,windows下需要‘\\'否則會(huì)出錯(cuò)。
補(bǔ)充__init__.py
在python模塊的每一個(gè)包中,都有一個(gè)__init__.py文件(這個(gè)文件定義了包的屬性和方法)然后是一些模塊文件和子目錄,假如子目錄中也有__init__.py 那么它就是這個(gè)包的子包了。當(dāng)你將一個(gè)包作為模塊導(dǎo)入(比如從 xml 導(dǎo)入 dom )的時(shí)候,實(shí)際上導(dǎo)入了它的__init__.py 文件。
一個(gè)包是一個(gè)帶有特殊文件 __init__.py 的目錄。__init__.py 文件定義了包的屬性和方法。其實(shí)它可以什么也不定義;可以只是一個(gè)空文件,但是必須存在。如果 __init__.py 不存在,這個(gè)目錄就僅僅是一個(gè)目錄,而不是一個(gè)包,它就不能被導(dǎo)入或者包含其它的模塊和嵌套包。
__init__.py 中還有一個(gè)重要的變量,叫做__all__。
如果此時(shí)目錄如下
– src |– mod1.py |– lib | |– mod2.py | |– mod3.py | |– sub | |– | |– mod3.py
我們有時(shí)會(huì)使出一招“全部導(dǎo)入”,也就是這樣:
from lib import *
這時(shí) import 就會(huì)把注冊(cè)在包__init__.py 文件中 __all__ 列表中的子模塊和子包導(dǎo)入到當(dāng)前作用域中來。比如:
#文件__init__.py __all__ = ["mod2", "mod3", "sub"]
以上這篇Python在不同目錄下導(dǎo)入模塊的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python數(shù)據(jù)解析之BeautifulSoup4的用法詳解
Beautiful?Soup?是一個(gè)可以從?HTML?或?XML?文件中提取數(shù)據(jù)的?Python?庫(kù),這篇文章主要來和大家介紹一下BeautifulSoup4的用法,需要的可以參考一下2023-06-06如何遠(yuǎn)程使用服務(wù)器上的Jupyter notebook
這篇文章主要介紹了如何遠(yuǎn)程使用服務(wù)器上的Jupyter notebook,主要是在服務(wù)器端執(zhí)行操作,需要特別注意為了防止遠(yuǎn)程中斷,使用掛起操作,即執(zhí)行nohup jupyter notebook,需要的朋友可以參考下2023-02-02離線狀態(tài)下在jupyter notebook中使用plotly實(shí)例
這篇文章主要介紹了離線狀態(tài)下在jupyter notebook中使用plotly實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python雙精度浮點(diǎn)數(shù)運(yùn)算并分行顯示操作示例
這篇文章主要介紹了Python雙精度浮點(diǎn)數(shù)運(yùn)算并分行顯示操作,涉及Python數(shù)學(xué)運(yùn)算及顯示相關(guān)操作技巧,注釋備有詳盡的說明,需要的朋友可以參考下2017-07-07Python中print函數(shù)語法格式以及各參數(shù)舉例詳解
這篇文章主要給大家介紹了關(guān)于Python中print函數(shù)語法格式以及各參數(shù)舉例詳解的相關(guān)資料,print()函數(shù)用于將指定的字符串或?qū)ο?通常是字符串)輸出到屏幕或文件中,需要的朋友可以參考下2023-10-10Python安裝并操作redis實(shí)現(xiàn)流程詳解
這篇文章主要介紹了Python安裝并操作redis實(shí)現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10