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

    Python

    気象庁の天気予報をBeautifulSoup4でスクレイピング

    気象庁の天気予報をBeautifulSoup4でスクレイピングします。サンプルとして群馬県の週間天気予報(場所、日付、曜日、最高気温、最低気温)を取得します。 コードはGitHubリポジトリにあげています。 週間天気予報 […]

    Posted on by press
    Django

    Djangoのテンプレートにrangeを渡す

    Djangoのテンプレートに範囲を渡す方法です。指定した月の全日数を表示したいときや日毎に処理をして表示させたいときなどにrangeに範囲を入れてテンプレートに渡せます。 views.py 現在の年と月を指定して総日数を […]

    Posted on by press