如何在不更改代码的情况下修复 python 中的相对导入错误?

How to fix relative import error in python without code change?

在 python 我有一个包含三个文件的文件夹

- __init__.py
- module.py
- test_module.py

其中模块module.py在文件test_module.py中导入如下:

from . import module

当然,当我只是 运行 test_module.py 我得到一个错误

> python test_module.py
Traceback (most recent call last):
  File "test_module.py", line 4, in <module>
    from . import module
ImportError: attempted relative import with no known parent package

但是当我将 PYTHONPATH 设置为我工作位置的绝对路径时

export PYTHONPATH=`pwd`

我希望导入工作正常(因为我设置了 PYTHONPATH)。但令我惊讶的是,我得到了同样的错误!

那么我可以在不更改任何代码的情况下修复相对导入错误

由于您描述的目录(我们称之为 thatdirectory)是一个包,由 __init__ 文件标记,您可以通过 cd 目录“修复”再往上,然后 运行

python -m thatdirectory.test_module

因为具有 -m 的 运行 模块以某种方式修复了 sys.path,使此特定配置起作用。

(一般来说,任何与 sys.path 手动混淆或需要更改 PYTHONPATH 才能工作的代码在我看来都是错误的...)