python呼叫包 Python的包引用與環境變數

2021-10-12 13:08:21 字數 1471 閱讀 1048

1、檔案/包的引用規則,要從工程的根目錄開始查詢,這樣的使用相對路徑的方式比較簡單,並且容易理解。

比如我們建立如下的目錄結構:

目錄結構.png

image.png

此時我們要在c 檔案中,引用a檔案中的內容,那麼在c檔案中,就可以這麼寫:

from dir_a import a

print(a.a)

同時我們執行python檔案的時候,需要在工程的根目錄進行執行。

image.png

2、為什麼要指定python的環境變數呢?

因為 sys.path 是python的乙個搜尋模組的路徑集,當我們將python的三方包的路徑新增進去的話,那麼我們就可以引用到所有的三方庫了。同樣也適用於我們自己建的包

下面先那工程內的包,進行舉個栗子:

下圖展示的是該工程的路徑已經被新增到python的搜尋路徑了,所以基於工程的根目錄執行不會出現任何錯誤。

image.png

錯誤例項:如果我們不在根目錄執行c檔案的話,會如何呢?

命令列執行.png

pycharm ide執行.png

因為命令列執行的時候,python的搜尋路徑是在檔案所在目錄(即test_import/dir_b/dir_c目錄)

而直接執行編輯器的時候,python的搜尋路徑會包含工程的根目錄與當前目錄。

所以在命令列執行,並且當進入到dir_c的時候,是從當前目錄去查詢了dir_a 當然是找不到的。所以就會報錯。而編輯器的時候是正常的,它會從根目錄再查詢一次。

q3:引用虛擬環境中的三方包?

有些時候我們會使用virtualenv 或者pipenv 等三方包,來建立虛擬環境,來管理我們工程所以用的python版本,但是我們在使用虛擬環境中的包的時候就需要在命令列指定python的環境變數(即python的搜尋路徑)。例如:

虛擬環境安裝的三方包️:

image.png

image.png

我們需要指定

命令列設定環境變數,立即生效。

export pythonpath=$pythonpath:

export pythonpath=$pythonpath:/root/.local/share/virtualenvs/create_a_vip_student-bxpvtgy6/lib/python3.7/site-packages:

除此之外,或許你為了實現乙個功能還引入了本工程中的的其他包,那麼就還需要將工程的根目錄加入到環境變數中。

最後就像這樣:

export pythonpath=$pythonpath:/root/.local/share/virtualenvs/create_a_vip_student-bxpvtgy6/lib/python3.7/site-packages:/var/lib/jenkins/workspace/create_a_vip_student/tools/dada:/var/lib/jenkins/workspace/create_a_vip_student

python模組包呼叫解析

原文 a init py a.py b init py b.py c init py c.py 如圖所示結構樹,b,c同屬於a的子目錄,但是b,c之間是平行的。b.py,c.py 分別如下 b.py def b hello print b hello c.py def c hello print c...

python 子包呼叫 跨目錄呼叫

簡單來講,模組是乙個包含python定義和語句的檔案,包是一種通過用 帶點號的模組名 來構造 python 模組命名空間的方法。詳細可以參考廖雪峰的 python教程 模組 使用的python版本 3.7.0 平台 win10 假如在main.py中呼叫pack.mod1.py中的函式func1,而...

python 不同包之間呼叫(包同級)

com crawler02.py init py core crawler core.py init py crawler01.py init py toolcrawler01 和 crawler02都需要呼叫crawler core 下簡稱f 中的方法。crawler01 是f的父級目錄下的檔案其...