pythonプラグインとautopep8でvscodeを使用しています
"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
"python.formatting.autopep8Args": ["--ignore", "E402"]
これはautopep8
に、「モジュールレベルのインポートがファイルの先頭にない」というエラー402を無視するように指示します(pep8の エラーのリスト )。
これと同じ方法を使用して、autopep8
設定を変更できます。たとえば、インデントのみを修正したい場合は、"python.formatting.autopep8Args": ["--select", "E1"]
を使用できます
autopep8 readme には、使用可能なオプションの詳細が記載されています。
インポートの並べ替えを一般的に無効にしたくないが、特定の行に対してのみ無効にする場合は、行の最後に次のプラグマを使用できます。
# noqa
または
# nopep8