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

    DockerとDjangoでマイグレーションコマンドを実行するとエラーになる

    DockerとDjangoでマイグレーションコマンドを実行するとエラーになる Docker環境で構築したDjangoプロジェクトでマイグレーションコマンドを実行した際に、docker-compose.ymlとsettin […]

    Posted on by press
    Django

    ReportLabで既存のPDFに文字を上書きする

    テンプレート用の既存PDFの上から文字を上書きしてダウンロードする方法です。 attachmentをつけるとリンクを押したら即ダウンロードが始まります。

    Posted on by press