Pycharm自动相对导入

25

每当使用PyCharm提供的自动导入功能时,它会生成绝对路径导入。即:

from my_package.my_subpackage import my_thing

取代

from .my_subpackage import my_thing

在导入 Python 包时,是否有一种设置可以使用相对导入而不是绝对导入?


请告诉我您具体的问题。 - Nihal
7
我没有问题,这只是一个问题而已。 - Laimonas Sutkus
1
我的问题与Idea 2019.3相反。我需要绝对自动导入,但它给出的是相对于根包的路径。 - dawid
3个回答

18

目前似乎没有办法更改自动导入功能使用相对导入的导入风格。您可以对导入语句进行的唯一样式更改是绝对导入的结构方式:

输入图像描述

(顺便说一下,Jetbrains/PyCharm的设置搜索功能非常出色)。

在重构时也会发生同样的情况,这绝对是我想看到添加的选项。


6
从 2019.3 开始,将有可能实现以下功能:https://youtrack.jetbrains.com/issue/PY-6054。请注意,如果文件中没有其他相对导入,它将不会自动执行相对导入。还有一种方法可以将现有的绝对导入转换为相对导入: enter image description here

我找到了你截图的操作,但是当我将其自动导入到已包含相对导入(例如'from ..foo.bar import baz')的文件中时,它仍会生成绝对导入。我是否缺少某些设置? - Michael Gundlach
请将其报告到 https://youtrack.jetbrains.com/issue/PY 并提供一些项目和重现步骤。我们会进行调查。 - Sergey K.
https://youtrack.jetbrains.com/issue/PY-6054#focus=streamItem-27-3843353.0-0 - Michael Gundlach

1
我建议不要使用相对路径,你可以参考这个问题: https://softwareengineering.stackexchange.com/a/159505 此外,你可以查看官方的 pep8 规范 https://www.python.org/dev/peps/pep-0008/ “绝对导入”是推荐的,因为它们通常更易读,并且在导入系统配置不正确时(例如包中的目录出现在 sys.path 中时)往往表现更好(或者至少提供更好的错误消息)。
根据我的个人经验,当 Pycharm IDE 通过更复杂的包布局来运行测试时,它们有时与 Pycharm 集成得不太好。我想其他工具可能也会有一些问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接