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
3
4
5
6
7
1.2 python查找包的過程
以我的電腦為例, python2的解釋器的路徑為

/usr/bin/python2
1
則我的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'
1
這樣就可以在sys.path中找到了.

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

path-prefix/local/lib/python3.5/site-package
1
如果使用apt-get,則第三方包放在(這個我不怎么用)

path-prefix/lib/python3.5/site-package
1
總結:
所以查找包的過程,前提是找到python的解釋器,這樣的話才能推導出path-prefix.那python的解釋器如何找呢

whereis python
# ['/usr/bin/python', '/usr/bin/python3.5']
————————————————
版權聲明:本文為CSDN博主「豬先生1994」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_19645269/article/details/104590587


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM