如何在不更改代码的情况下修复 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
才能工作的代码在我看来都是错误的...)
在 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
才能工作的代码在我看来都是错误的...)