Open4

『Pythonの開発環境の基本をおさえよう』LTに参加してみた🌟

まさぴょん🐱まさぴょん🐱

『Pythonの開発環境の基本をおさえよう』LTに参加してみた🌟

https://studyco.connpass.com/event/309931/

  • Pythonは機械学習(LLM含む)やデータ分析でデファクトスタンダードとなっているプログラミング言語です。
  • そんなPythonですが、開発環境の整え方、難しくありませんか?
  • pip・venv・pyenv・Pipenvなどなど、似たような名前・似たような役割のツールがたくさん登場して、最初は全然意味が分からないと思います。
  • Pythonの開発環境には「仮想環境」というものも登場します。
  • そもそもこの「Pythonの仮想環境」とはいったいなんなのでしょうか?
  • これらの疑問を解消できるよう、この勉強会ではPythonの開発環境の基本を解説していきます。

Youtube Live にて開催 ( 今回のアーカイブも閲覧可能 )

https://youtube.com/live/yjjYg6zCCwc

LTのスライド

https://speakerdeck.com/os1ma/rantitaimumian-qiang-hui-pythonnokai-fa-huan-jing-noji-ben-woosaeyou

環境構築のSample

https://github.com/os1ma/python-dev-environment-example

まさぴょん🐱まさぴょん🐱

Pythonの仮想環境の仕組み

  • Pythonの仮想環境は、ただのディレクトリです。

    • つまり、参照先が仮想環境ごとに変わる。
    • 開発プロジェクトA と 開発プロジェクトB で比較して、考える。
      • 開発プロジェクトA用のディレクトリを用意して、そこでだけパッケージをinstallする。
      • 開発プロジェクトB用のディレクトリを用意して、そこでだけパッケージをinstallする。
  • VSCodeがPython仮想環境のパッケージをうまく認識しないときは、Pythonインタプリタを選び直せば解決します。

https://speakerdeck.com/os1ma/pythonno-jia-xiang-huan-jing-wowan-quan-nili-jie-siyou

まさぴょん🐱まさぴょん🐱

Python の開発環境の 3 つの観点とそのためのツールたち🌟

結論

  1. Docker 環境なら、Docker (Dev Container) と Poetry (ポエトリー) という組み合わせがおすすめ。
  2. Docker (Dev Container) なしで Python の開発環境を構築する場合は、Rye (ライ) が一番おすすめ。
  3. Pythonのバージョン管理は、pyenv ではなく asdf がおすすめ。
    • asdfなら、Poetry や Pipenv のバージョンの指定にも対応している。
  4. venv は、activate忘れなどがあるため、他の仮想環境がおすすめ。。。
  5. pip でのパッケージ管理はツラい。。。
    • 明示的に requirements.txt を作成しないと、何のどのバージョンをインストールすればいいのか分からなくなってしまうという問題点。。。
    • pip freeze で生成した requirements.txt から、あるパッケージとその依存関係を適切に削除するのも難しいです。
      • pip freeze で requirements.txt を生成する方法では、特定の環境だけで必要なパッケージ(例えば開発中だけ必要なフォーマッタやテスト用のライブラリなど)を、他の環境でも必要なパッケージと分けて一覧化するのがとても大変です。

意識すべき観点

  1. Pythonのバージョン指定
  2. 仮想環境
  3. パッケージ管理
Python のバージョン指定 仮想環境 パッケージ管理
pip ×
venv × ×
pyenv ×
asdf ×
Docker (Dev Container) ×
Pipenv ×
Poetry ×
Rye

○ ... この目的で使える
△ ... この目的で使えるが一部機能がある
× ... この目的で使えない

https://zenn.dev/os1ma/articles/935f6e653f1052

まさぴょん🐱まさぴょん🐱

その他の開発環境の定番ツールたち(リンター・フォーマッター・静的な型チェック)

  1. リンター: こう書いた方がいいよと教えてくれるツール

    • Flake8, Ruff など
    • Ruff の採用が最近だと多い。
  2. フォーマッター: コードを自動で整形してくれるツール

    • autopep8, Black, isort など。
    • 最近、Ruff が フォーマットもサポートしたので、RuffでもOK
  3. 静的型チェック: タイプヒントをチェックするツール

    • Pythonは、タイプヒントを書いても正しさを保証されません。
    • Mypyでチェックしましょう。
    • VSCodeの場合は、Mypy Type Checker を入れよう!
  4. タスクランナー: よく使うコマンドを整理しておくツール

    • Python には、デファクトスタンダードのタスクランナーがなくて、Makeがよく使われている印象です。

https://speakerdeck.com/os1ma/rantitaimumian-qiang-hui-pythonnokai-fa-huan-jing-noji-ben-woosaeyou