今更ながらDataScienceライクな研究の環境構築をいちからつくっていくぅ
研究でPythonを使って久しい, 特に個々数年はニューラルネットワークの研究をしている
今までは自分ひとりで完結していたが, これからは複数人での作業が増えることもあり, 環境構築をきちんとしようと思い立った
少し調べるといろいろと最近は便利なものも増えてきていて, 自分への備忘録も兼ねてイチからやっていく
この記事シリーズでは
- 仮想環境周り
- レポジトリー周り
- ニューラルネットワークの学習周り
などなどをつらつらと書いていきたい
まずは, 仮想環境まわり
pipx
pip
と似ていますが, pythonで走るアプリケーション(flake8
とか)をインストールするためのpip
だと思ってください
インストールは公式にもあるように(Linuxでは)
sudo apt update
sudo apt install pipx
pipx ensurepath
のように行います.
pipxでインストールしたコマンドはデフォルトでは$HOME/.local/pipx/venvs
に仮想環境としてインストールされます
このpipx自体をpipxで管理していく方法でインストールしていきます
python3 -m venv $HOME/.local/pipx/venvs/pipx
仮想環境に入って
. $HOME/.local/pipx/venvs/pipx/bin/activate
pip install -U pip setuptools
pip install pipx
この状態でpipx list
しても, metadataがないと怒られるので
pipx install --force pipx
と--force
をつけて再度インストールします
Installing to existing venv 'pipx'
⚠️ Note: pipx was already on your PATH at あなたのPATH
installed package pipx 1.4.3, installed using Python 3.8.10
These apps are now globally available
- pipx
done! ✨ 🌟 ✨
(あなたのPATHは環境依存のPATH)
とインストールできます
pipx ensurepath
としてPATHを通しておきます(すでに通っている場合でもやっていい)
仮想環境から抜けて確認しておきます
venvs are in XXX
apps are exposed on your $PATH at XXX
manual pages are exposed at XXX
package pipx 1.4.3, installed using Python 3.8.10
- pipx
となって問題なさそうです
Rye
'Pythonのエコシステムは本当に複雑である'
このようなPythonのエコシステムを統一したいという気持ちで生まれた、らしい
Flaskなどで有名な@mitsuhiko氏が作者である。
Rust製なのでPythonへの依存関係がないのがメリットで嬉しい.
ドキュメントはこっち
Ryeを導入する
とりあえず導入してみる, 公式はこっち
curl -sSf https://rye-up.com/get | bash
echo 'source "$HOME/.rye/env"' >> ~/.zshrc
source "$HOME/.rye/env"
バージョンの管理
Ryeではpythonのバージョンと仮想環境も管理してくれる
rye pin 3.11
とすると, .python-version
というファイルで管理される.
この時点では仮想環境自体はインストールされない.
(rye sync
でセットアップされる)
ライブラリの導入
ryeでは, 簡単にrye add
すれば基本的にはOK, pyproject.toml
に追加されていく
# 開発用ツール
rye add --dev black
# 必要なライブラリはなにもつけずに
rye add numpy
# インストールはここでされる
rye sync
その他
他にも,
# このようにしてもOK
rye add "flask>=2.0"
# remove はシンプルに
rye remove flask
virtualenvのコンテキストで実行可能ファイルを実行するには、runコマンドを使う。例えばblackを使いたい場合は、次のように追加して実行する
rye add black
rye sync
rye run black
仮想環境を有効にするには, 一般的な方法で
# 仮想環境にはいる
. .venv/bin/activate
# 出る
deactivate
このように非常にシンプルかつ直感的にプロジェクトを作ることができる
Discussion