导入前vscode autopep8 allow语句

时间:2019-01-03 21:53:27

标签: python visual-studio-code vscode-settings autopep8

我正在将vscode与python插件一起使用,并将autopep8与

"editor.formatOnSave": true

我有需要导入的本地软件包,所以我有类似的东西

import sys
sys.path.insert(0, '/path/to/packages')
import localpackage

但是当我保存时,vscode / autopep8将所有导入语句移到代码之前,因此python无法找到我的本地包。

import sys
import localpackage
sys.path.insert(0, '/path/to/packages')

我如何告诉vscode / autopep8可以在导入之前放置一条语句,还是有导入本地软件包的更正确方法?

作为一种解决方法,如果您导入if语句,看起来就可以了

import sys

sys.path.insert(0, '/path/to/packages')
if 'localpackage' not in sys.modules:
    import localpackage

2 个答案:

答案 0 :(得分:6)

  1. 打开设置
  2. 搜索autopep8。您应该看到以下结果:

enter image description here

  1. 单击第一个选项下的“在settings.json中编辑”
  2. 在“用户设置” json中添加以下参数:

"python.formatting.autopep8Args": ["--ignore", "E402"]

enter image description here

这告诉autopep8忽略错误402,即:“模块级别导入不在文件顶部”(这是pep8中的list of errors

您可以使用相同的方法来更改任何autopep8设置。例如,如果您只想修复缩进,则可以使用"python.formatting.autopep8Args": ["--select", "E1"]

autopep8 readme包含有关可用选项的更多信息。

答案 1 :(得分:-1)

如果您通常不想禁用导入排序,而只对特定的行禁用它,则可以在该行的末尾使用以下编译指示:

# nopep8

{{1}}