在使用 Visual Studio 代码和 autopep8 导入之前允许语句
Allow statements before imports with Visual Studio Code and autopep8
我将 Visual Studio 代码与 Python 插件和 autopep8 一起使用:
"editor.formatOnSave": true
我有需要导入的本地包,所以我有类似的东西:
import sys
sys.path.insert(0, '/path/to/packages')
import localpackage
但是当我保存时,Visual Studio Code/autopep8 将所有导入语句移到代码之前,所以 Python 找不到我的本地包。
import sys
import localpackage
sys.path.insert(0, '/path/to/packages')
如何告诉Visual Studio Code/autopep8在导入前加个语句是可以的,还是有更正确的导入本地包的方法?
作为一种解决方法,如果您在 if 语句中导入,看起来没问题:
import sys
sys.path.insert(0, '/path/to/packages')
if 'localpackage' not in sys.modules:
import localpackage
打开设置
搜索 autopep8。您应该会看到以下结果:
点击第一个选项下的“在settings.json中编辑”
将以下参数添加到用户设置 JSON 文件:
"python.formatting.autopep8Args": ["--ignore", "E402"]
这告诉 autopep8
忽略错误 402,即:“模块级导入不在文件顶部”(这里是 pep8 中的 list of errors)
您可以使用相同的方法更改任何 autopep8
设置。例如,如果你只想修复缩进,你可以使用 "python.formatting.autopep8Args": ["--select", "E1"]
autopep8 readme 提供了有关可用选项的更多信息。
如果您不想普遍禁用导入排序,而只是针对特定行禁用它,您可以在每行末尾使用以下编译指示:
# noqa
或
# nopep8
就像你的例子一样:
import sys # noqa
sys.path.insert(0, '/path/to/packages') # noqa
import localpackage
我将 Visual Studio 代码与 Python 插件和 autopep8 一起使用:
"editor.formatOnSave": true
我有需要导入的本地包,所以我有类似的东西:
import sys
sys.path.insert(0, '/path/to/packages')
import localpackage
但是当我保存时,Visual Studio Code/autopep8 将所有导入语句移到代码之前,所以 Python 找不到我的本地包。
import sys
import localpackage
sys.path.insert(0, '/path/to/packages')
如何告诉Visual Studio Code/autopep8在导入前加个语句是可以的,还是有更正确的导入本地包的方法?
作为一种解决方法,如果您在 if 语句中导入,看起来没问题:
import sys
sys.path.insert(0, '/path/to/packages')
if 'localpackage' not in sys.modules:
import localpackage
打开设置
搜索 autopep8。您应该会看到以下结果:
点击第一个选项下的“在settings.json中编辑”
将以下参数添加到用户设置 JSON 文件:
"python.formatting.autopep8Args": ["--ignore", "E402"]
这告诉 autopep8
忽略错误 402,即:“模块级导入不在文件顶部”(这里是 pep8 中的 list of errors)
您可以使用相同的方法更改任何 autopep8
设置。例如,如果你只想修复缩进,你可以使用 "python.formatting.autopep8Args": ["--select", "E1"]
autopep8 readme 提供了有关可用选项的更多信息。
如果您不想普遍禁用导入排序,而只是针对特定行禁用它,您可以在每行末尾使用以下编译指示:
# noqa
或
# nopep8
就像你的例子一样:
import sys # noqa
sys.path.insert(0, '/path/to/packages') # noqa
import localpackage