【问题标题】:Can PyCharm's optimize imports also alphabetize them?PyCharm 的优化导入也可以按字母顺序排列吗?
【发布时间】:2017-11-20 04:20:17
【问题描述】:

我很喜欢 PyCharm 对 Python 导入的优化 - 以及删除未使用的导入,遵循 PEP8 为它们提供了合理的布局并使其更易于阅读。有什么方法可以让 PyC​​harm 对它们进行额外的字母排序(至少对我而言,这样可以更快地扫描它们)?

【问题讨论】:

标签: python pycharm


【解决方案1】:

PyCharm 现在通过使用 Code -> Optimize Imports 自动执行此操作。还有sorts them into groups per PEP 8

详情请见https://www.jetbrains.com/help/pycharm/optimizing-imports.html

【讨论】:

  • 在某些时候这可能不是真的,但现在 PyC 真的在一个组内对导入进行排序(标准导入、库、自己的代码?-或者只是标准与非标准-我有 3 个组)。到目前为止一切都很好,但是 Line Sorter 可以有更多的用途,而不仅仅是对导入进行排序。
  • 嗯,当我有 3rd 方和内置导入时(例如:“import pytest”后跟“from datetime import datetime, time, date”后跟“import unittest”)PEP8 会说内置插件应该放在第一位(pytest 将是最后一个导入),但 Pycharm 将它们与 pytest 放在首位,unittest 放在第 2 位,datetime 放在第 3 位。
【解决方案2】:

PyCharm 仅根据 PEP-8 中指定的组对导入进行排序,而不是按字母顺序。

【讨论】:

    【解决方案3】:

    如前所述,Code -> Optimize imports 似乎无法做到这一点。

    但是,有一个名为 Lines sorter 的插件(存在于 PyCharm 存储库中),可以使用它标记所有导入行并选择 Edit -> Sort lines。不完美,但比手工操作更容易。

    【讨论】:

    • 这真的很有帮助。在设置中搜索“排序线”并分配一个快捷方式(比如 F5),因为它使排序导入更容易。
    【解决方案4】:

    这确实是对 PyCharm 的一个很好的补充。

    在那之前,有一个命令行工具可以执行您想要的操作,称为isort。它不附带 PyCharm 插件,但可以通过 External 命令Synchronize files after execution 选项进行集成,如 in their docs 所述。您甚至可以将它与原始键绑定挂钩。

    【讨论】:

      【解决方案5】:

      为更有头脑的人提供额外的答案。您可以安装IdeaVim 并使用Shift + V,选择要排序的行,然后调用:sort 来完成。

      【讨论】:

        猜你喜欢
        • 2014-07-30
        • 1970-01-01
        • 2012-08-23
        • 2020-03-29
        • 2014-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多