Dump
by @endotaishi_
作業のための準備作業を1日かけて行なった記録
たまには時間をかけて準備することが大事だって皆さんも知っていると思うゾ。
ポは3月16日から21日まで生態学会に参加して、ポスター発表を行ったゾ(オンラインで)。
昨年末からずっと続けた研究をやっとの思いで発表したんだけど、その期間に書き散らかしたプログラムがもう・・・・・
ポは今年度ももちろん研究を続けるから、新学期が始まる前にプログラムの整理を行ったゾ。
つまり今回は、新学期に新しくする作業に備えての作業を1日かけて行なった話だゾ。
Python環境構築(pyenv+poetry)
pyenv
- Pythonのバージョンを管理するツール。異なるプロジェクトで異なるPythonのバージョンを使用したい場合に便利。
- システムに複数のPythonバージョンをインストールして切り替えることができる。
- ローカルとグローバル、それぞれのプロジェクトで異なるPythonバージョンを簡単に設定できる。
poetry
- パッケージの依存関係管理とプロジェクトのビルドを行うツール。
- 依存関係の解決とパッケージのインストールがシームレスに行える。
- pyproject.tomlを使って設定を一箇所にまとめられる。
- 仮想環境の管理もサポート。
(引用:chatGPT)
つまり、pyenv+poetryで環境構築することで、pythonのヴァージョンを管理しながら、プロジェクトごとのパッケージの管理ができるんだゾ。
さらにpoetryは自動で仮想環境の作成まで行ってくれるゾ。
ポはvenv(python標準の仮想環境)も使おうかと思ったけど、ゼミ内での共有が面倒になりそうだから今回はやめておいたゾ。
それぞれのインストール方法は公式ドキュメントを参考にしたゾ。
ディレクトリ構成の見直し
ポはディレクトリの構成も見直したゾ。
~
|- data
| |- 整形後データが色んなフォルダに分かれてる
|- out
| |- 実験データ
|- src
| |- __pycache__
| |- data
| | |- ロウデータを実験用に整形するプログラム
| |- mylib
| | |- 実験用自作モジュール
| |- visualization
| | |- グラフ描画用のプログラム
| |- main.py
|- poetry.lock
|- pyproject.toml
|- README.md
ROWデータは研究室のコンピュータ何台かに保存してあるゾ。
そこから複製したデータは、~/src/dataにあるプログラムを使って実験用に整形するゾ。
main.pyで実験を行ったら、あとは~/src/visualization/にあるプログラムを実行して、グラフを描画するだけだゾ。
簡単に見えるけど、たくさんデータとプログラムがあって、散在してたからポが1日かけてまとめたんだゾ。
pyproject.tomlはpoetryを使うと自動で作られるやつで、パッケージの依存関係を管理しているゾ。
プログラムのヴァージョン管理はgit/githubを使って行っているゾ。
まとめ
ポが今日1日頑張ったおかげで、これからの実験が楽になるゾ。
一見無駄に見える作業でも、どこかで時間をとって行うだけで、今後もっとたくさんの時間を節約できることをポは知っているんだゾ。
参考にしたサイトたち
poetry公式ドキュメント:https://python-poetry.org/docs/
pyenvリポジトリ:https://github.com/pyenv/pyenv
研究のためのpython開発環境:https://zenn.dev/zenizeni/books/a64578f98450c2
データサイエンスプロジェクトのディレクトリ構成どうするか問題:https://takuti.me/ja/note/data-science-project-structure/
プロジェクトのディレクトリ推奨構成:https://qiita.com/flcn-x/items/c866eec8824a3cd70fa8
【Kaggleのフォルダ構成や管理方法】タイタニック用のGitHubリポジトリを公開しました:https://upura.hatenablog.com/entry/2018/12/28/225234
これでもう悩まない!機械学習のためのフォルダ構成テンプレートを使おう。:https://qiita.com/qmiyajun/items/5039b97a159b9f521e49