30 python匯入包和子包

2021-10-25 06:53:38 字數 2116 閱讀 4149

我們先建立乙個包,所謂的包就是建立乙個目錄,裡面有乙個__init__.py檔案。

我們在common目錄下建立乙個mypack的目錄,在該目錄裡面建立下列3個.py檔案:

# mypack/__init__.py

print

("mypack init"

)def

init()

:print

("mypack init function"

)

# mypack/video.py

print

("video module"

)def

view()

:print

("video view"

)

# mypack/audio.py

print

("audio module"

)def

play()

:print

("play audio"

)

測試檔案 testpack.py:

報錯,找不到myapck這個包,因為這個包不在當前原始碼檔案同級目錄下,該怎麼辦呢?

通過sys.path.insert新增查詢路徑:

# 系統模組

import sys

# print(sys.path)

# 新增模組的查詢路徑,包的查詢路徑和模組的是一致的

sys.path.insert(0,

"../common/"

)

然後可以去呼叫__init__.py裡面的初始化函式,但是在執行檔案testpack.py發現報錯:

只引入了包mypack的命名空間,也就是說mypack命名空間下面的所有內容都歸到我們當前的主模組__main__的命名空間裡面了:

# 還有一種匯入方法

# 引入包和模組的命名空間

# from mypack.audio import *

from mypack.audio import play

play(

)

要注意*星號:

from mypack import

*

這種方式不匯入包的全部模組,也就是不會匯入video、audio,這種方式只匯入了__init__.py裡面所有的函式和成員。

# mypack/__init__.py

print

("mypack init"

)# import * 的時候需要載入的模組

__all__ =

["audio"

,"video"

,"opengl"

]def

init()

:print

("mypack init function"

)

修改testpack.py檔案如下:

# 子包 mypack/sub/pydir.py

包裡面包含多個模組,模組裡面又包含了多個函式、類和變數。

包 -> 模組 -> 函式、類、變數

Python包 模組和包匯入詳解(import)

1.模組 module 1.1 模組定義 通常模組為乙個.py檔案,其他可作為module的檔案型別還有 pyo pyc pyd so dll module 可看作乙個工具類,可共用或者隱藏 細節,將相關 放置在乙個module以便讓 更好用 易懂,讓coder重點放在高層邏輯上。module能定義...

python 包 模組匯入

os.getenv path 系統可執行程式位置 sys.path可匯入的python包位置 python module 的 path 屬性 可顯示每個包的檔案位置 what is pythonpath,what is python package what can we do with init ...

python 包的匯入

1,包 定義 把解決一類問題的模組放在同乙個資料夾裡 匯入語法 在import from.import匯入語句中 而不是在使用時 遇到帶點的 本質 就是乙個包含 init py檔案的目錄,在py2中,必須有 init py檔案,py3沒有也可以執行。包只是模組的一種形式而已,包即模組,是為了匯入方便...