在使用python語言進行專案開發時難免會將不同功能進行模組劃分,但是個個功能模組之間又難免會有模組相互匯入引用。
本文章主要是講解本人在使用python3進行開發過程中遇到的模組之間相互引用時遇到的問題,以下內容都是基於python3,
1、首先建立基的目錄結構在這裡我建立了乙個父目錄parent,在父目錄下建立suba、subb兩個子目錄。分別又建立a.py和b.py。最後目錄結構如下:
parent
||______suba
| |
| | a.py
| |
||______subb
| |
| | b.py
| |
2、初始化目錄結構,將目錄變為模組在這裡我們要將單純的目錄變為程式設計專案中的模組(也可以叫包),在每個層級目錄中新增__init__.py 檔案。當然
,一般情況下__init__.py 檔案為空檔案,在某些情況下我們可以將一些要匯入包加入到__init__.py 檔案中,
具體操作自行google一下。新增__init__.py 檔案之後的目錄結構如下:
parent
||______suba
| | __init__.py
| | a.py
| |
| |
||______subb
| | __init__.py
| | b.py
| |
| |
3、模組匯入經過上面兩個步驟的操作我已經成功的建立了兩個suba、subb模組,並建立了兩個功能類,
現在我要在subb的b.py功能類中使用suba模組中b.py檔案中類的功能。
使用如下語句我就可以so easy實現:
from ..suba.a import a
當然對於這樣的語句充滿了疑惑,依我目前的了解是這樣的
..代表當前我要匯入父目錄下也就是parent目錄下的某個模組,那麼如果要匯入a類必須是suba模組,
最後也就是from ..suba.a 這樣的語法操作
從我的實踐操作來看,如果說我要在同級目錄下匯入相應的模組,直接使用 . 著重強調是乙個.。
看乙個栗子:現在我有乙個需求,給suba模組新增功能乙個功能aa.py,在父目錄裡面我需要有乙個主體程式main.py,構建成新的目錄如下。現在我要在aa類中使用a類的某些功能函式,我要在main程式中使用suba的a的功能和subb的b的功能
parent
| __init__.py
| main.py
|______suba
| | __init__.py
| | a.py
| | aa.py
| |
||______subb
| | __init__.py
| | b.py
| |
| |
此時,首先我們需要將父目錄parent目錄程式設計使用的模組,也就是__init__.py檔案新增進去。然以後來看一下怎麼操作:
我要在aa中使用a中的函式,根據我的時間經驗這樣就可以了 from .a import a。成功使用匯入a使用a的功能。這裡使用了 . 就是代表當前目錄下的檔案。
我要在main中使用a的功能和b的功能,由1可知我只需要使用
from .suba.a import a
from .subb.b import b
成功的將兩個模組裡面的功能進行匯入
重點強調:這樣的層級結構是不能讓程式執行的,任何乙個模組都不能單獨執行,接續看下去
4、程式的執行
經過各種掃操作後發現**沒法執行,竟然報錯,具體錯誤資訊忘記了。此時心裡真是萬馬奔騰。
查閱各種資料,有這樣乙個知識點讓我忽略了,最後還是定位到了。python中是不允許在子目錄下直接執行,
如果在子目錄下直接執行系統認為你當前的執行目錄就行你的頂級目錄,然後發現程式報錯不報錯,
但是***一執行就報錯,此時我的做法是將main.py再次提出來建立乙個更高層級的目錄。
grandparent
| main.py
||___parent
| | __init__.py
| |
| |______suba
| | | __init__.py
| | | a.py
| | | aa.py
| | |
| |
| |______subb
| | | __init__.py
| | | b.py
| | |
| | |
|___uncle
再次重點強調:只能執行main.py。也有其他方式可以直接執行子目錄的檔案,但是我感覺在使用ide開發python的時候還是直接執行main方便一點 Python 不同級目錄之間模組的呼叫
python的模組有自帶的也有第三方,還可以自定義然後引用 1 呼叫自帶的模組,例如,sys 呼叫自帶的模組只需要import sys 引入既可以使用 2 第三方的需要先安裝模組然後再import引入 3 自定義 1 同級目錄模組的呼叫 test t1.py t2.py test1 testm.py...
python導模組和包
1 python中的模組 python模組,是乙個python檔案,以.py結尾,包含了python物件的定義和python語句。2 python中的包 包就是資料夾,但該資料夾下必須存在init.py 檔案,該檔案的內容可以為空。直接匯入模組 import time 直接匯入包 import se...
python 模組引用 python如何引用模組
模組實際上就是 以.py為結尾的檔案 注意點 自定義的模組盡量不要和系統模組重名 模組內部封裝了很多實用的功能,有時在模組外部呼叫就需要將其匯入,匯入模組簡單劃分,實際上就只有兩種 import from import 詳細一點劃分有五種 1,improt 模組名 呼叫 模組名.功能名 2,impo...