23

每当您使用 PyCharm 提供的自动导入时,它都会生成一个绝对路径导入。IE

from my_package.my_subpackage import my_thing

代替

from .my_subpackage import my_thing

导入python包时是否有使用相对导入而不是绝对导入的设置?

4

3 回答 3

18

目前似乎无法将自动导入功能的导入样式更改为使用相对导入。您可以对 import 语句进行的唯一样式更改是绝对导入的结构:

在此处输入图像描述

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

重构时也会发生同样的事情,这绝对是我希望看到的一个选项。

于 2018-02-09T10:12:52.720 回答
5

从 2019.3 https://youtrack.jetbrains.com/issue/PY-6054开始将有可能 注意,如果该文件中还没有其他相对导入,它将不会自动执行相对导入。还有一个动作可以将现有的绝对导入转换为相对: 在此处输入图像描述

于 2019-11-14T11:37:37.683 回答
0

我一般建议不要相对,你可以参考这个问题: https ://softwareengineering.stackexchange.com/a/159505

此外,您可以查看官方 pep8 规格https://www.python.org/dev/peps/pep-0008/

建议使用绝对导入,因为如果导入系统配置不正确(例如当包内的目录最终位于 sys.path 上时),它们通常更具可读性并且往往表现更好(或至少提供更好的错误消息):

根据我的个人经验,当通过 Pycharm 运行更复杂的包布局破坏测试时,它们有时与 Pycharm IDE 的集成很差。我想其他工具也可能存在一些问题。

于 2018-12-01T18:03:45.767 回答