Python プログラミング

【VS Code】モジュールの自動整形(並び替え)をオフする方法

2021年7月2日

モモ
Python(Flask)1年生のモモです。

この記事では『Visual Studio Codeの自動整形によるモジュールの並び替えを無効化する方法』について解説します。

こんなお悩みがある方向けの記事です。

悩める人
・自動整形でエラーが発生する
・保存するとimport文が勝手に並び替わる...
・vscodeの設定はいじりたくない

さっそく、私が実際に直面したエラー例とともに紹介したいと思います!

※呼び方はいろいろ(オートソート・自動ソート・コード整形)ですが、この記事では「自動整形」に統一します。

 

import文が自動整形されるデメリット

autopep8(PythonコードをPEP 8に従い自動的にフォーマット化するツール)によって、自動整形されるこの機能。

ファイル保存毎にコードを整えてくれるので、普段は大変お世話になってます。

しかし、モジュールをコード途中におきたい時も自動整形されてしまうデメリットがあり、下記のエラーを経験しました。

① 'circular import' エラー
② 'cannot to find' エラー

これから紹介する方法で、2つとも解決します!VS Codeの設定をいじる必要は一切ありません。

 

import文が自動整形される時の対処法

autopep8 対処法:#noqa ( #nopep8 でもOK)をモジュール横にうつ

 models.py
from app import db #noqa
from app import db #nopep8

これで、自動整形から除外してくれます◎

ちなみに、isortをお使いの場合は以下のとおり。

isort 対処法:#isort :skipをモジュール横にうつ

 models.py
from app import db #isort :skip

ここからは、私が直面したエラー事例をご紹介します。

① circular import エラー

エラー文:"Import Error: cannot import 'db' from partially initialized module 'app' (most likely due to circular import )"

原因:'db'オブジェクト以降にインポートされるべきモジュール(from models import Cafe)が自動整形により並び替えられてしまう。models内のデータはdbに格納されるから、db = SQLAlchemy(app) の後にimport しなければいけない。

 失敗例
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from models import Cafe
db = SQLAlchemy(app) #これより上でmodelsをimportできない
admin = Admin(app)
admin.add_view(ModelView(Cafe, db.session))
 成功例
db = SQLAlchemy(app) #これ以降でimportする
from models import Cafe # noqa
admin = Admin(app)
admin.add_view(ModelView(Cafe, db.session))

エラー② cannot to find エラー

エラー文:""

原因:上位階層のディレクトリと同階層のディレクトリをimportしたい時に発生。osやsysといったモジュールを使いpath指定したいが、自動整形でうまく行きませんでした。

 失敗例
 
 成功例
 

まとめ

参考になれば嬉しいです!

  • この記事を書いた人

モモ

独学(2年)→未経験アプリ開発エンジニア(主にJava)。エンジニアになる為の転職談やプログラミングで学んだ事をのせています。 楽天経済圏に生息しています。

-Python, プログラミング
-

© 2023 taotaotech