Skip to content

Instantly share code, notes, and snippets.

@junkor-1011
Last active November 6, 2022 09:18
Show Gist options
  • Save junkor-1011/ec23e307095bb92341b1cb8feb7c34cf to your computer and use it in GitHub Desktop.
Save junkor-1011/ec23e307095bb92341b1cb8feb7c34cf to your computer and use it in GitHub Desktop.
Python環境構築周りのまとめ(個人用メモ)

Python環境構築周りのまとめ(+個人的見解)

(最近はほぼPython触っていないが、色々考えた結果忘れないうちにまとめておいた方が良い気がしたのでメモしておく)

有用な参考文献

各ツール:

  • pyenv
    • Python自体のバージョンの切り替えに使える
    • 時々シェルが変なエラーを出したりするのが難点(?)
    • pyenvの環境下で作った仮想環境を管理するプラグインpyenv-virtualenvなども組み合わせると便利かもしれない
    • miniforgeやmambaforgeもインストール可能であり、miniforgeやmambaforgeで作ったconda仮想環境も一緒に管理出来る
  • Pipenv
    • (若干語弊があるが)nodeでいうnpmやyarnのような感覚でPythonの仮想環境の管理が出来る
      • Pipfileにはパッケージの最小限の依存関係+スクリプト(タスクランナー)などを記述出来る
      • Pipefile.lockにはインストールされている全パッケージの詳細なバージョン等の情報と詳細な依存関係などが記述され、 lockファイルによって仮想環境を完全に再現出来る
      • 参考記事: pipenvの導入(requirements.txtも作る)のようにしてpip用のrequirements.txtの生成も出来る
  • Poetry
    • 一見するとPipenvのような感じだがタスクランナー機能は無く、パッケージ開発に特化している印象
    • そこそこ"PipenvからPoetryに移行した"という旨の記事が存在するが、Poetryの正しい使い方では無いような気がする
  • Miniconda
    • ミニマルな構成でPython + conda環境をインストール出来る。ほとんど何もはいっていないスリムなAnaconda、といった感じ。
    • condaコマンドさえあれば任意のバージョンのPythonのconda仮想環境を作れるので、昔はよく使っていた
    • デフォルトチャンネルがAnaconda用リポジトリなので、商用利用するときは使うリポジトリは変えないと利用規約に抵触するおそれがあるので注意
    • ちなみに、miniconda自体をpyenvからインストール可能
  • Miniforge
    • ざっくり言うとminicondaのデフォルトチャンネルがconda-forgeになっているもの
    • condaの高速な代替コマンドであるmambaも使えるようになっている派生版: mambaforgeもある
    • miniforge, mambaforgeもpyenvからインストール可能 ← 参考

Docker

  • python - Docker official Image
    • 一般的にdebian slimベースのものが実用的
    • イメージサイズを極限まで削りたいときはalpineベースのも便利だったり
    • 開発環境から生成した(←Pipenvを使ったり、pip freezeしたり)requirements.txtとソースコードをCOPYして使うなどすると、 所望のバージョンで余計なものがほぼ入っていない、再現性の高い環境構築が出来る
  • condaforge/miniforge3, condaforge/mambaforge
    • condaベースで開発しているときは使ったり、元になっているDockerfileを参考にしたりときもある
  • jupyter

(続き)

TODO

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment