PyCharm&DockerでもBlackでコードフォーマット


press
PyCharm&DockerでもBlackでコードフォーマット

PyCharm&DockerでもBlackでコードフォーマット

コードはGitHubリポジトリにあげています。

venvなどで環境構築されたプロジェクトであれば、PyCharmのFile Wacherというプラグインでファイルの保存時にBlackによるコードの自動整形が可能ですが、Dockerで環境構築されたプロジェクトはBlackのパスが読み込まれずFile Wacherが正常に動作しません。

File Watcherのエラー

従来はこの記事のように⌥ ⌘ Lでコードを整形していましたが、この方法だとコマンドを実行し忘れたり、実行してもそれぞれの開発環境によってコードフォーマットが変更されてしまうことがありました。

docker-composeコマンドでコンテナを起動する度に自動整形

現状ではPyCharmの設定だけでDockerで環境構築されたプロジェクトにBlackを適用することはできませんが、docker-compose.ymlにコードフォーマットのコマンドを追加することで、docker-composeコマンドでコンテナを起動する度にBlackによるコードフォーマットが可能です。

version: "3"
services:
  app:
    build: .
    volumes:
      - ./app:/code
    command: sh -c "black . && pip freeze > requirements.txt && python app.py"
    container_name: python_app

結果

app.pyのコードがリフォーマットされました。

Blackによるコードの自動整形

解説

command: sh -c "black . && pip freeze > requirements.txt && python app.py"
sh -cを付けることで複数のコマンドを指定可能
コマンドは&&で繋げる
blackコマンドとPythonの実行コマンドを指定

pip freeze > requirements.txt
コンテナ内で更新されたパッケージ情報をホストのrequirements.txtに反映


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Related Articles

    Django

    40分でUbuntu Nginx PostgreSQL Django Gunicornの環境構築

    40分でUbuntu Nginx PostgreSQL Django Gunicornの環境構築 VPSへのログイン(新規タブ) OSの初期設定(アップデート、アップグレード) 新規ユーザーを追加 新しく追加したユーザー […]

    Posted on by press
    Django

    DjangoでQuerySetをpandasのDataFrameに変換する

    DjangoでQuerySetで取得したデータをそのままpandasのDataFrameに変換する方法です。データを成形する必要がないときや、とりあえず全件CSV化したいときなどに便利な方法です。

    Posted on by press