我到處都看到使用import sys
或import mymodule
如果import語句只包含文件名,python如何找到模塊文件?
Python代碼導入模塊如何解釋找到正確的文件,如果不提供目錄或路徑?
我到處都看到使用import sys
或import mymodule
如果import語句只包含文件名,python如何找到模塊文件?
Python代碼導入模塊如何解釋找到正確的文件,如果不提供目錄或路徑?
http://docs.python.org/3/tutorial/modules.html#the-module-search-path
6.1.2。模塊搜索路徑
當導入名爲
spam
的模塊時,解釋器首先搜索具有該名稱的內置模塊。如果未找到,則它將在變量sys.path
給出的目錄列表中搜索名爲spam.py
的文件。sys.path
從這些位置初始化:
- 包含輸入腳本(或未指定文件時的當前目錄)的目錄。
PYTHONPATH
(目錄名稱列表,其語法與shell變量PATH
相同)。- 安裝相關的默認值。
注:在支持符號鏈接的文件系統,符號鏈接後面之後計算包含輸入腳本的目錄。換句話說,包含符號鏈接的目錄不會被添加到模塊搜索路徑中。
初始化後,Python程序可以修改
sys.path
。包含正在運行的腳本的目錄放置在搜索路徑的開頭,位於標準庫路徑之前。這意味着該目錄中的腳本將被加載,而不是庫目錄中相同名稱的模塊。除非要進行替換,否則這是錯誤的。更多信息請參見標準模塊部分。
有關「特定於安裝的默認設置」的信息,請參閱關於the site
module的文檔。
Python有一個路徑變量,就像你在終端裏面有一個變量。 Python會在該路徑內的文件夾或程序所在的文件夾中查找模塊。
它使用PYTHONPATH,設置爲環境變量,以找到(含有__init__.py
文件的文件夾)包和模塊(或者,如果已經加載一次,從sys.modules
檢索模塊對象)。
謝謝!順便說一下,原則上允許使用絕對路徑還是相對路徑?我會在10分鐘內接受 – Asciiom 2013-03-06 15:59:57
您可以使用,但一般而言,爲了清晰的代碼,絕對是首選。 – 2013-03-06 17:15:02
此外,你可以看到當前的路徑是通過使用sys
模塊
import sys
print sys.path
型'的幫助(「進口」)'在控制檯和享受什麼。 – DSM 2013-03-06 15:58:54
http://effbot.org/zone/import-confusion.htm – Hoopdady 2013-03-06 15:59:28
['import' statement](http://docs.python.org/2/reference/simple_stmts.html#the-import-statement) – jfs 2013-03-06 16:02:13