我的應(yīng)用程序是這樣組織的:apps/ code/ libglobal/ funglobal.py tests/ project/ liblocal/ funlocal.py main.py在main.py我有:import liblocal.funlocal在funlocal.py我嘗試導(dǎo)入funglobal.py:from ....code.libglobal import funglobal當(dāng)我跑python3 -B tests/project/main.py我收到一個(gè)錯(cuò)誤:from ....code.libglobal import funglobalValueError: attempted relative import beyond top-level package我已經(jīng)閱讀了很多關(guān)于python3相對(duì)導(dǎo)入的信息,但仍然沒有找到如何在不徹底改變應(yīng)用程序組織的情況下解決這個(gè)錯(cuò)誤。有什么解決辦法嗎?
2 回答

慕哥9229398
TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
由于正在執(zhí)行的腳本將其__name__設(shè)置為__main__并將自己定義為位于包的頂層,因此它拒絕識(shí)別同級(jí)目錄中的腳本。
您可以通過sys.pathhack解決此問題:
import sys, os
sys.path.insert(0, os.path.abspath('../..'))
或此答案中提供了與 setuptools 的有趣替代方案。

互換的青春
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
你有一個(gè)__init__.py
每個(gè)文件夾中的腳本?
如果不是,您應(yīng)該__init__.py
在每個(gè)文件夾中創(chuàng)建一個(gè)名為的空腳本。
添加回答
舉報(bào)
0/150
提交
取消