[英]Python: what does “import” prefer - modules or packages?
假設在當前目錄中有一個名為somecode.py
的文件和一個名為somecode
的目錄,其中包含__init__.py
文件。 現在,我從該目錄運行其他Python腳本,該腳本執行import somecode
。 將導入哪個文件somecode.py
或somecode/__init__.py
?
解決這個問題的定義順序是否可靠?
哦,有人針對這種行為參考官方文檔嗎? :-)
包將在模塊之前導入。 圖示:
% tree .
.
|-- foo
| |-- __init__.py
| `-- __init__.pyc
`-- foo.py
foo.py
:
% cat foo.py
print 'you have imported foo.py'
foo/__init__.py
:
% cat foo/__init__.py
print 'you have imported foo/__init__.py'
從交互式解釋器中:
>>> import foo
you have imported foo/__init__.py
我不知道這在哪里正式記錄。
按評論編輯:這是在Mac OS X 10.6.7上使用Python 2.7執行的。 我還在Ubuntu 10.10上使用Python 2.6.5執行了此操作,並得到了相同的結果。
使用以下目錄在Windows 10(Python版本3.5)和Ubuntu Linux(Python版本2.7和3.5)上進行了測試:
https://github.com/alphaCTzo7G/stackexchange/tree/master/python/order_import_module_vs_package
該模塊始終處於加載狀態,並且每次都會打印以下消息:
“您已經導入了foo / init .py”
因此,在這些系統之間似乎是一致的,該程序包首先被加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.