[英]Python 3.5 vs Python 2.7: Modules importing submodules
在過去的幾個小時中,我一直在使用Google搜索,在任何地方都找不到等效的問題。 此外,2.7和3.5的文檔似乎相同,因此我認為沒有記錄這種行為。
這是我的目錄結構:
project
-- project.py
-- api
-- __init__.py
-- subapi
-- __init__.py
project/project.py
內容: import api
project/api/__init__.py
: import subapi
如果我從projects文件夾中執行python project.py
(使用python 2.7),它將返回而沒有錯誤。 如果我對python 3( python3 project.py
)進行相同操作,則崩潰
Traceback (most recent call last):
File "project.py", line 1, in <module>
import api
File "/home/me/Documents/project/api/__init__.py", line 1, in <module>
import subapi
ImportError: No module named 'subapi'
如果我重寫import語句以使用相對於項目目錄的路徑( import api.subapi
),則它適用於python 2和3。雖然這不是令人滿意的解決方案,因為這要求我從子模塊中引用父模塊。哪種方式打敗了模塊化的想法。
有誰知道我該怎么做才能恢復python2的行為? 模塊搜索算法應優先使用import語句在文件的本地目錄中搜索。 順便說一句,它還應優先考慮上述內置模塊中的這些文件。 嘗試導入模塊“測試”。
-編輯-stackoverflow要求我將我的問題與另一個稱為“如何進行相對進口”的問題區分開。 我認為這個問題有所不同,因為我專門詢問兩個版本之間的差異。 使用相對導入是解決方案,而不是問題。
使用顯式相對導入:
from . import subapi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.