首頁 > 軟體

python修改包匯入時搜尋路徑的方法

2022-05-18 16:01:31

前言

在Python中,import操作應該算是最為頻繁和常見的,但同時也應該是最核心需要搞清楚其工作原理的地方,比如,python是如何找到我希望匯入的包的位置的,如果搞清楚了這個問題,那我們後續有自定義的包,就可以放到電腦的任意路徑下,然後修改下import的搜尋路徑資訊,就可以找到我們自定義的包了,本文主要就是解決上面的疑問。

一、模組匯入時路徑搜尋機制

1.1 包匯入搜尋機制

python的import操作,其本質類似於我們日常在電腦上搜尋指定檔名的檔案,只不過,python一般不會像我們那樣,在本地磁碟全盤進行搜尋,而是有其自己的控制機制,可以控制搜尋的範圍和順序,這樣可以保證效率,同時也可以做到一定程度的隔離,比如python建立虛擬的執行環境,就是基於這個原理,不同虛擬執行環境,python安裝路徑、import搜尋路徑都是單獨隔離的,而常用的虛擬環境維護和建立工具,其核心也是通過修改python預設安裝路徑、版本、包搜尋路徑等資訊達到目的的。

一般情況下,import時,包搜尋順序和範圍如下:

  1. 首先搜尋執行命令當前資料夾,或者系統當前工作資料夾(可通過命令修改cwd)
  2. 再搜尋環境變數PYTHONPATH內的檔案路徑
  3. 最後搜尋python安裝路徑內的sitepackages資料夾(一般通過pip安裝的包,均會預設放到這個資料夾下,當然,也可簡單的將自己的包放到這個資料夾下,這樣也無需改變搜尋路徑)

1.2 修改搜尋路徑

核心思路,即修改1.1中提到的三個搜尋節點的值,即可改變 包匯入時的搜尋範圍

1.2.1 通過修改sys.path變數

sys.path變數,管理的是Python包搜尋路徑內所有資料夾路徑(即當前資料夾、PYTHONPATH環境變數內的路徑、python預設安裝路徑),該變數是個列表,可以通過sys.path.append或者sys.path.insert等方法,將自己希望匯入時被搜尋的路徑新增到該列表變數內即可。

不過該方法只會在執行時生效,一旦退出,便失效。

1.2.2 通過修改PYTHONPATH環境變數

PYTHONPATH環境變數,是管理python包匯入時的搜尋路徑的變數,故可以通過向該環境變數內新增路徑的方式來修改搜尋路徑,且該方法因為是修改了環境變數,故也是永久的,且影響也是全域性的。

針對Mac電腦,修改該環境變數的方法如下:

  1. 開啟~/.bashrc檔案,如果沒有,則通過touch命令建立
  2. 在檔案內寫上 export PYTHONPATH=your own dir :$PYTHONPATH,比如你希望將~/test路徑新增至該環境變數,則為  export PYTHONPATH=~/test :$PYTHONPATH
  3. 在命令列執行 source ~/.bashrc(主要是讓系統重新載入執行該檔案,以使此次修改生效)

1.2.3 通過新增**.pth檔案

以上兩個辦法,或者是臨時修改,或者就是全域性修改影響面太大,第三種方式可謂兼具前兩種方法的特點。

可以在指定Python安裝目錄下的site-packages目錄資料夾內,新增一個**.pth檔案,在該檔案內逐行新增自己希望被搜尋的路徑即可。

附:臨時新增python搜尋包路徑的方法

方法1:(先進入python)

import sys
sys.path.append(‘路徑')

(這種方式僅對當前python有效)

方法2:

export PYTHONPATH=路徑

(這種方式對所有的python有效)

總結

到此這篇關於python修改包匯入時搜尋路徑的文章就介紹到這了,更多相關python包匯入搜尋路徑內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com