python修改包導(dǎo)入時搜索路徑的方法
前言
在Python中,import操作應(yīng)該算是最為頻繁和常見的,但同時也應(yīng)該是最核心需要搞清楚其工作原理的地方,比如,python是如何找到我希望導(dǎo)入的包的位置的,如果搞清楚了這個問題,那我們后續(xù)有自定義的包,就可以放到電腦的任意路徑下,然后修改下import的搜索路徑信息,就可以找到我們自定義的包了,本文主要就是解決上面的疑問。
一、模塊導(dǎo)入時路徑搜索機制
1.1 包導(dǎo)入搜索機制
python的import操作,其本質(zhì)類似于我們?nèi)粘T陔娔X上搜索指定文件名的文件,只不過,python一般不會像我們那樣,在本地磁盤全盤進行搜索,而是有其自己的控制機制,可以控制搜索的范圍和順序,這樣可以保證效率,同時也可以做到一定程度的隔離,比如python創(chuàng)建虛擬的運行環(huán)境,就是基于這個原理,不同虛擬運行環(huán)境,python安裝路徑、import搜索路徑都是單獨隔離的,而常用的虛擬環(huán)境維護和創(chuàng)建工具,其核心也是通過修改python默認安裝路徑、版本、包搜索路徑等信息達到目的的。
一般情況下,import時,包搜索順序和范圍如下:
- 首先搜索運行命令當(dāng)前文件夾,或者系統(tǒng)當(dāng)前工作文件夾(可通過命令修改cwd)
- 再搜索環(huán)境變量PYTHONPATH內(nèi)的文件路徑
- 最后搜索python安裝路徑內(nèi)的sitepackages文件夾(一般通過pip安裝的包,均會默認放到這個文件夾下,當(dāng)然,也可簡單的將自己的包放到這個文件夾下,這樣也無需改變搜索路徑)
1.2 修改搜索路徑
核心思路,即修改1.1中提到的三個搜索節(jié)點的值,即可改變 包導(dǎo)入時的搜索范圍
1.2.1 通過修改sys.path變量
sys.path變量,管理的是Python包搜索路徑內(nèi)所有文件夾路徑(即當(dāng)前文件夾、PYTHONPATH環(huán)境變量內(nèi)的路徑、python默認安裝路徑),該變量是個列表,可以通過sys.path.append或者sys.path.insert等方法,將自己希望導(dǎo)入時被搜索的路徑添加到該列表變量內(nèi)即可。
不過該方法只會在運行時生效,一旦退出,便失效。
1.2.2 通過修改PYTHONPATH環(huán)境變量
PYTHONPATH環(huán)境變量,是管理python包導(dǎo)入時的搜索路徑的變量,故可以通過向該環(huán)境變量內(nèi)添加路徑的方式來修改搜索路徑,且該方法因為是修改了環(huán)境變量,故也是永久的,且影響也是全局的。
針對Mac電腦,修改該環(huán)境變量的方法如下:
- 打開~/.bashrc文件,如果沒有,則通過touch命令創(chuàng)建
- 在文件內(nèi)寫上 export PYTHONPATH=your own dir :$PYTHONPATH,比如你希望將~/test路徑添加至該環(huán)境變量,則為 export PYTHONPATH=~/test :$PYTHONPATH
- 在命令行執(zhí)行 source ~/.bashrc(主要是讓系統(tǒng)重新加載運行該文件,以使此次修改生效)
1.2.3 通過添加**.pth文件
以上兩個辦法,或者是臨時修改,或者就是全局修改影響面太大,第三種方式可謂兼具前兩種方法的特點。
可以在指定Python安裝目錄下的site-packages目錄文件夾內(nèi),添加一個**.pth文件,在該文件內(nèi)逐行添加自己希望被搜索的路徑即可。
附:臨時添加python搜索包路徑的方法
方法1:(先進入python)
import sys sys.path.append(‘路徑')
(這種方式僅對當(dāng)前python有效)
方法2:
export PYTHONPATH=路徑
(這種方式對所有的python有效)
總結(jié)
到此這篇關(guān)于python修改包導(dǎo)入時搜索路徑的文章就介紹到這了,更多相關(guān)python包導(dǎo)入搜索路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python操作SQLite數(shù)據(jù)庫的方法詳解【導(dǎo)入,創(chuàng)建,游標,增刪改查等】
這篇文章主要介紹了Python操作SQLite數(shù)據(jù)庫的方法,簡單說明了sqlite數(shù)據(jù)庫的相關(guān)概念,并結(jié)合實例形式較為詳細的分析了Python針對sqlite數(shù)據(jù)庫的導(dǎo)入,創(chuàng)建,游標,增刪改查等操作技巧,需要的朋友可以參考下2017-07-07
python腳本請求數(shù)量達到上限,http請求重試問題
這篇文章主要介紹了python腳本請求數(shù)量達到上限,http請求重試問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Python使用Selenium WebDriver的入門介紹及安裝教程(最新推薦)
這篇文章主要介紹了Python使用Selenium WebDriver的入門介紹及安裝教程,本文使用環(huán)境為python3.11+win10 64位+firefox瀏覽器,所以本文使用的瀏覽器驅(qū)動是Firefox的geckodriver ,如果你使用的是其他瀏覽器,那么選擇自己對應(yīng)的瀏覽器驅(qū)動程序即可,需要的朋友可以參考下2023-04-04

