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
