簡體   English   中英

Python:“導入”更喜歡什么-模塊或軟件包?

[英]Python: what does “import” prefer - modules or packages?

假設在當前目錄中有一個名為somecode.py的文件和一個名為somecode的目錄,其中包含__init__.py文件。 現在,我從該目錄運行其他Python腳本,該腳本執行import somecode 將導入哪個文件somecode.pysomecode/__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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM