vscode autopep8 разрешить операторы перед импортом - PullRequest
0 голосов
/ 04 января 2019

Я использую 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 голосов
/ 17 июля 2019

Если вы не хотите вообще отключать сортировку импорта, а просто отключаете ее для конкретной строки, вы можете использовать следующие прагмы в конце строки:

# noqa

или

# nopep8
0 голосов
/ 04 января 2019
  1. Открыть настройки
  2. Поиск autopep8.Вы должны увидеть следующие результаты:

enter image description here

Нажмите «Изменить в settings.json» под первым параметром Добавьте следующий аргумент в Настройки пользователя json:

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

enter image description here

Это говорит autopep8 игнорировать ошибку 402, а именно: «импорт на уровне модуля не в начале файла» (вот список ошибок вpep8)

Этот же метод можно использовать для изменения любых настроек autopep8.Например, если вы хотите исправить только отступ, вы можете использовать "python.formatting.autopep8Args": ["--select", "E1"]

. autopep8 readme содержит дополнительную информацию о доступных параметрах.

...