python 如何找到import的包


 

Python import 時會首先尋找 sys.path 中列出的路徑,通常是這樣:


>>> import sys
>>> '\n'.join(sys.path)

/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
那么 Python 是如何獲取 sys.path 的呢?根據 Python 的文檔,首先是當前目錄,然后是 PYTHONPATH 環境變量,再之后是安裝時設置的默認目錄,由 site 模塊控制。


Python 在啟動的時候會自動引用 site 模塊,關於它是如何操作 sys.path 的,可以參考相關文檔。

當然,你也可以手動操作 sys.path,這同樣會影響會話期間 Python 尋找包的行為。

imp 模塊
Python 的 import 流程由 imp 模塊 控制,因此我們可以完全自己手動控制庫的 import 過程。

使用 imp.find_module 來尋找模塊:

>>> import imp
>>> imp.find_module('numpy')
(None, '/usr/local/lib/python2.7/dist-packages/numpy', ('', '', 5))
當然,我們可以使用 imp.load_source 直接 import 某個包文件並指定其包名。

imp.load_source('module_name', 'module_full_path')

print(module_name)
python – dist-packages和site-packages有什么區別?
sudo apt-get install 安裝的package存放在 /usr/lib/python2.7/dist-packages目錄中
pip 或者 easy_install安裝的package存放在/usr/local/lib/python2.7/dist-packages目錄中
手動從源代碼安裝的package存放在site-packages目錄中

————————————————
版權聲明:本文為CSDN博主「cvml」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_15505637/article/details/80908751


免責聲明!

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



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