繁体   English   中英

如何在不更改代码的情况下修复 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 )是 package,由__init__文件标记,您可以通过cd更高的目录“修复”该目录,然后运行

python -m thatdirectory.test_module

因为使用-m运行模块会修复sys.path以使此特定配置正常工作。

(一般来说,任何手动与sys.path或需要更改PYTHONPATH才能工作的代码在我眼中都被破坏了......)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM