2. Python是如何找包的,Python安裝的包放在哪裏.

問題一: python是如何查找包的?

1.1 三個重要的函數
首先介紹幾個有用的函數,以python2爲例,這三個函數的含義是
excutable: Python的解釋器路徑
path: 包的搜索路徑列表
prefix: 當前使用的path-prefix

import sys
print(sys.executable)  
 # /usr/bin/python2
print(sys.path)           
 # ['/usr/lib/python2.7', '/usr/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages']
print(sys.prefix)
 # '/usr' 

1.2 python查找包的過程
以我的電腦爲例, python2的解釋器的路徑爲

/usr/bin/python2

則我的python的path-prefix爲’/usr’
下面爲包的搜索過程:
A: path-prefix/lib : 標準庫路徑,裏面有os,sys之類的
B: path-prefix/lib/python.X.Y/site-package :第三方庫路徑
C: 當前路徑 : pwd的結果
所以程序在搜索包的時候,是先搜索標準庫,然後第三方庫,然後才自己的項目目錄.

當然還有一種情況: 就是你有一個第三方庫,不在上面任何一個目錄,加入說你的第三方庫的文件目錄爲’/home/sl/lib/hello_project’
可以通過在PYTHONPATH中添加路徑,如下

export PYTHONPATH=$PYTHONPATH:'/home/sl/lib/hello_project'

這樣就可以在sys.path中找到了.

問題二: Python的包放在哪裏呢?

實際上上面的問題已經說出python是怎麼查找包的,自然就知道包放在哪裏的,但是這裏要注意一點是,我們通常會使用 apt-get或者是pip來進行安裝包.這兩者的安裝路徑是不一樣的
如果使用pip或者pip3,則第三方包放在:

path-prefix/local/lib/python3.5/site-package

如果使用apt-get,則第三方包放在(這個我不怎麼用)

path-prefix/lib/python3.5/site-package

總結:

所以查找包的過程,前提是找到python的解釋器,這樣的話才能推導出path-prefix.那python的解釋器如何找呢

whereis python
# ['/usr/bin/python', '/usr/bin/python3.5']
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章