我正在將現有的 Python 2.7 專案遷移到 Python 3.9。我在 Python 3 中遇到了與目錄結構相關的問題。
我當前的專案目錄結構是:
├───project
│ ├───core
| --__init__.py
| --main.py
| --settings.py
│ ├───jobs
| --job.py
main.py:
import settings
class Main:
def __init__(self, a=None, b=settings.B):
self.a = a
self.b = b
def start(self):
print(self.a, self.b)
job.py:
import sys
# sys.path.insert(0, '../core/')
from core.main import Main
from core import settings
main = Main(settings.A)
main.start()
使用 Python 2.7 解釋器時,此結構沒有問題,但在 Python 3.9中,job.py執行時出現以下錯誤:
File "project\core\main.py", line 1, in <module>
import settings
ModuleNotFoundError: No module named 'settings'
該問題可以通過取消注釋job.py腳本第 2 行上的代碼來解決,但我想避免像這樣對檔案夾值進行硬編碼。如果有人可以提供一種替代方法并解釋為什么它在較新的 Python 版本中以這種方式運行,我將不勝感激。
uj5u.com熱心網友回復:
由于模棱兩可,python3 中針對此類用例洗掉了絕對匯入。(這很好地解釋了它:匯入陳述句 python3 中的更改)
您可以在此用例中使用相對匯入 - https://docs.python.org/3/reference/import.html#package-relative-imports
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/482251.html
