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

    Google Colaboratoryで画像をアップロードして表示する

    画像のアップロード Google Colaboratoryで画像をアップロードして表示する方法です。画像解析以外にもCSVのアップロードなどの際にも同じ方法でアップロードできます。 画像のインライン表示 今度はアップロー […]

    Posted on by press
    Django

    Pandasで作ったCSVをダウンロードする

    Django上でPandasで作ったCSVをダウンロードさせる方法です。df.to_csv(“filename.csv”)でも出力は出来ますがダウンロードは出来ないので、ダウンロード機能が必要な場 […]

    Posted on by press