簡體   English   中英

Python 3.5 vs Python 2.7:模塊導入子模塊

[英]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__.pyimport 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.

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