python?中的?module?和?package
接著如何在python 中導(dǎo)入 package的分享,這一次是在 package 下繼續(xù)嵌套一個 package ,
項目目錄如下:
pkg1 ---__init__.py ---mod1.py ------pkg2 ---------__init__.py ---------mod2.py
import pkg1.pkg2.mod2
我們嘗試將 mod2 進(jìn)行導(dǎo)入,這一次將先導(dǎo)入 pkg1 然后 pkg2 最后導(dǎo)入 mod2
import pkg1 import pkg2 import mod2
從輸出上來看,我們發(fā)現(xiàn) mod1 并沒有自動被導(dǎo)入進(jìn)來。
import pkg1.pkg2.mod2 pkg1.pkg2.mod2.say_hi()
我們通過pkg1.pkg2.mod2.say_hi()
來訪問 mod2 中 say_hi 函數(shù)。
print('pkg1' in sys.modules)#True print('pkg1.pkg2' in sys.modules)#True print('pkg1.pkg2.mod2' in sys.modules)#True
通過給導(dǎo)入 module 起一個別名方式來快捷地訪問 mod2 module 對象的屬性。python 會自動執(zhí)行可以訪問到 mod2 經(jīng)過的 package ,通過輸出不難發(fā)現(xiàn)這些 package 已經(jīng)被導(dǎo)入,并添加到了 sys.modules 緩存中。
import pkg1.pkg2.mod2 as mod2 mod2.say_hi()
pkg1 ---__init__.py ---mod1.py ------pkg2 ---------__init__.py ---------mod2.py main.py
在 pkg1 package 下 __init__.py
import pkg1.pkg2.mod2 print("import pkg1")
這我們在 pkg1 package 下的 __init__.py
文件導(dǎo)入 mod2 module 是絕對路徑 pkg1.pkg2.mod2。表示我們執(zhí)行 __init__.py
文件是在 pkg1 外面執(zhí)行,所以路徑中也包含了 pkg1,對于這個 project 來說,main.py 是入口文件,要執(zhí)行這個項目,我們只需要執(zhí)行文件夾下 main.py 文件即可。pkg1 和 main.py 位于同一個目錄級別,任何子模塊(sub-module)都是
import pkg1.pkg2.mod2 as mod2 mod2.say_hi()
為了解釋我們進(jìn)一步說明,我們再去創(chuàng)建一個項目,項目下放兩個
main.py my_mod.py
import socket x=2 def say_hi(): print("say hi from my mod")
在 main.py 代碼如下
import my_mod as mod print(mod.x) print(mod.socket.gethostname())
從而我們知道,我們在 main.py 導(dǎo)入 my_mod 作為,然后在 my_mod 文件導(dǎo)入 socket module 可以通過 mod.socket 導(dǎo)入。
server ---app.py
這里我們 app.py 里只添加了一個語句,在終端輸出
print("running app")
在 python 中,可以在目錄下搜索指定的文件并執(zhí)行,python 解釋器提供 -m
參數(shù)可以讓我們指定module 名稱來執(zhí)行一個 python module 文件,所以可以通過下面語句來運(yùn)行 server 文件夾下的 app.py 文件。
python -m server.app
python 會在 sys.path
路徑搜索 `server/app.py
我們也可以將 server 下的 app.py 重命名為 __main__.py
如下
server ---__main__.py
這樣就可以直接通過 python -m server
語句來執(zhí)行 server package 下的 __main__.py
文件。當(dāng)然我們可以同時在 server package 創(chuàng)建一個 __init__.py
和 __main__.py
兩個文件。
到此這篇關(guān)于 python 中的 module 和 package 的文章就介紹到這了,更多相關(guān) module 和 package 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pycharm使用docker容器開發(fā)的詳細(xì)教程
這篇文章主要介紹了pycharm使用docker容器開發(fā)的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01在Python操作時間和日期之a(chǎn)sctime()方法的使用
這篇文章主要介紹了在Python操作時間和日期之a(chǎn)sctime()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05使用NumPy進(jìn)行數(shù)組數(shù)據(jù)處理的示例詳解
NumPy是Python中用于數(shù)值計算的核心包之一,它提供了大量的高效數(shù)組操作函數(shù)和數(shù)學(xué)函數(shù),可以支持多維數(shù)組和矩陣運(yùn)算。本文主要為大家介紹了NumPy進(jìn)行數(shù)組數(shù)據(jù)處理的具體方法,需要的可以參考一下2023-03-03詳解將Python程序(.py)轉(zhuǎn)換為Windows可執(zhí)行文件(.exe)
這篇文章主要介紹了詳解將Python程序(.py)轉(zhuǎn)換為Windows可執(zhí)行文件(.exe),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-07-07