如何在作为包或非包运行时进行相对导入?

12 浏览
0 Comments

如何在作为包或非包运行时进行相对导入?

这个问题已经有解答了

如何解决\"在非包中尝试相对导入\"的问题,即使有__init__.py文件

my_module.py是我正在开发的包中的一个文件。有时,我想单独运行它(python -i my_module.py)进行调试。

在直接运行它的情况下,from .other_module import x, y 相对导入语法会失败。

为了解决这个问题,我已经在我包中的每个文件的顶部填充了这些语句,而不是正常的导入语句:

try:
    from .other_module import x, y
except ImportError:
    from other_module import x, y

但现在我有了我见过的最丑的​​前奏。

这种问题应该如何解决?我只想无论我是作为一个包中的模块运行,还是为了调试目的而单独运行,都可以导入相对模块。

admin 更改状态以发布 2023年5月20日
0
0 Comments

在运行时可能只需要设置PYTHONPATH,这样导入反应就始终是相对于项目根目录的。

PYTHONPATH=$HOME/code/package/src/package python3 src/package/foo.py

0