Python 在使用Visual Studio代码和autopep8导入之前允许语句

Python 在使用Visual Studio代码和autopep8导入之前允许语句,python,visual-studio-code,vscode-settings,autopep8,Python,Visual Studio Code,Vscode Settings,Autopep8,我将Visual Studio代码与Python插件一起使用,并将autopep8与以下内容一起使用: "editor.formatOnSave": true 我有需要导入的本地软件包,因此我有如下内容: import sys sys.path.insert(0, '/path/to/packages') import localpackage 但是当我保存时,VisualStudioCode/autopep8将所有导入语句移到代码之前,因此Python无法找到我的本地包

我将Visual Studio代码与Python插件一起使用,并将autopep8与以下内容一起使用:

"editor.formatOnSave": true
我有需要导入的本地软件包,因此我有如下内容:

import sys
sys.path.insert(0, '/path/to/packages')
import localpackage
但是当我保存时,VisualStudioCode/autopep8将所有导入语句移到代码之前,因此Python无法找到我的本地包

import sys
import localpackage
sys.path.insert(0, '/path/to/packages')
我如何告诉VisualStudioCode/autopep8在导入之前放置一条语句是可以的,或者是否有更正确的方法导入本地包

作为一种解决方法,如果您在if语句中导入,看起来还可以:

import sys

sys.path.insert(0, '/path/to/packages')
if 'localpackage' not in sys.modules:
    import localpackage
  • 开放设置

  • 搜索autopep8。您应该看到以下结果:

  • 单击第一个选项下的“Edit in settings.json”

  • 将以下参数添加到用户设置JSON文件:

    “python.formatting.autopep8Args”:[“--ignore”,“E402”]
    

  • 这告诉
    autopep8
    忽略错误402,即:“模块级导入不在文件顶部”(以下是pep8中的错误)

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


    提供了有关可用选项的详细信息。

    如果您不想通常禁用导入排序,而只是对特定行禁用它,则可以在每行末尾使用以下pragma:

    # noqa
    

    比如你的例子:

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

    我不知道autopep8的标志是什么,但是一旦你找到它,你就可以用
    “python.formatting.autopep8Args”
    来指定它。settings.json中的条目应该是
    “python.formatting.autopep8Args”:[“--ignore”,“E402”]
    (参见下面的完整答案)。作为补充说明,我一次只能得到一个参数。如果我尝试执行类似于:
    “python.formatting.autopep8Args”:[“--ignore”,“E402”,“--ignore”,“E401”]
    这两个参数中只有一个有效(通常是第二个)。我不知道这是为什么,如果有人有一个解决方案,将不胜感激@您需要用逗号将它们分开吗?例如,
    “--ignore”,“E401,E701”
    我可以在setup.cfg中放一些东西吗?现在在vscode中,您需要搜索AutoDep8,单击“添加项”,添加--ignore=E402,然后单击“确定”。
    import sys # noqa
    sys.path.insert(0, '/path/to/packages') # noqa
    import localpackage