python是如何尋找套件的
相關推薦:《python影片》
##現在大家的電腦上很可能不只一個Python,還有更多的虛擬環境,導致安裝套件的時候,一不小心就忘了注意安裝套件的路徑。首先我們來解決找包包的問題,這個問題回答起來很簡單,但很多人不知道這個原理。假如你的Python解釋器的路徑是幾個有用的函數
sys.executable 目前使用的Python解釋器路徑sys.path 目前套件的搜尋路徑清單sys.prefix 目前使用的>>> import sys >>> sys.executable'/home/frostming/.pyenv/versions/3.7.2/bin/python' >>> sys.path ['', '/home/frostming/.pyenv/versions/3.7.2/lib/python37.zip', '/home/frostming/.pyenv/versions/3.7.2/lib/python3.7', '/home/frostming/.pyenv/versions/3.7.2/lib/python3.7/lib-dynload', '/home/frostming/.local/lib/python3.7/site-packages', '/mnt/d/Workspace/pipenv', '/home/frostming/.pyenv/versions/3.7.2/lib/python3.7/site-packages'] >>> sys.prefix'/home/frostming/.pyenv/versions/3.7.2'
使用環境變數新增搜尋路徑
#如果你的套件的路徑不存在上面列出的搜尋路徑清單裡,可以把路徑加到PYTHONPATH環境變數裡,多個路徑用:隔開(Windows用;)。 但要注意,避免把不同Python版本套件的路徑加到PYTHONPATH裡,例如PYTHONPATH=/home/frostming/.local/lib/python2.7/site-packages,因為PYTHONPATH中的路徑是優先於預設搜尋路徑,如果用Python 3的話會有相容性問題。 順便說下PATH是用來找執行程式的搜尋路徑,如果你在終端機中執行指令my_cmd,系統會依序掃描PATH中的路徑,看my_cmd是否存在於該路徑下,所以如果提示找不到程式或指令無法識別,那你就要看路徑是否加到PATH裡了。Python是如何安裝套件的
現在用安裝Python套件基本上是用的pip,就算你是用pipenv,poetry,底層依然是pip,一律適用。如果你沒有安裝pip請參考這裡,如果安裝了還無法用pip指令請參考上一節。運行pip有兩種方式:
pip ... python -m pip ...第一種方式和第二種方式大同小異,區別是第一種方式使用的Python解釋器是寫在pip裡的,一般情況下,如果你的pip路徑是
pip中更改安裝位置的選項
--prefix PATH,替換#虛擬環境
虛擬環境就是為了隔離不同專案的依賴套件,使他們安裝到不同的路徑下,以防止依賴衝突的問題。了解Python是如何安裝套件的機制之後就不難理解虛擬環境(virtualenv, venv模組)的原理。其實,執行virtualenv myenv會複製一個新的Python解釋器到myenv/bin下,並創建好myenv/lib,myenv/lib/pythonX.Y/site-packages等目錄(venv模組不是用的複製,但結果基本上一樣)。執行source myenv/bin/activate以後會把myenv/bin塞到PATH前面,讓這個複製出來的Python解釋器最優先被搜尋到。這樣,後續安裝套件時,總結#
看到這裡大家可以發現,關於套件路徑搜尋最重要的就是這個
現在回到開頭的三個問題,大家會解決了嗎?在留言區寫出你的排查步驟或解決方法。
本文範例皆使用Unix路徑習慣,若為Windows系統則應做適當改動,如
以上是python安裝的套件如何尋找的詳細內容。更多資訊請關注PHP中文網其他相關文章!