RaspberryPiのPython環境をPyenv+Poetryで作る
はじめに
RaspberryPi
のPython環境をPyenv
とPoetry
で作ったのでその備忘録的な記事です。
環境
- 端末:
Raspberry Pi 4
- OS:
Raspberry Pi OS
ラズパイOSは各自ググって入れましょう。
Pyenvの環境構築
Pyenvのインストール
Githubに従ってインストールします。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ cd ~/.pyenv && src/configure && make -C src
インストール完了後、PATH
を通します。.bashrc
の末尾に追加してください。
vim
を使っていますが、vi
でもなんでも好きなものを使ってください。
$ vim ~/.bashrc
# 末尾に以下を追加
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
.bashrcを反映させる
.bashrc
を反映させます。
$ source ~/.bashrc
ターミナル再読み込みでも良いです。
これでpyenv
コマンドが使えるようになったはずです。
バージョンを表示して、うまく行っているか確認しましょう。
$ pyenv --version
pyenv 2.3.6-15-g13d85686
pythonのインストールに必要なパッケージをインストール
$ sudo apt-get install libssl-dev libbz2-dev libreadline-dev libsqlite3-dev tk-dev libffi-dev liblzma-dev
私の環境では、上記コマンドにあるライブラリを入れれば大丈夫でした。
この後のPythonインストール時に必要なライブラリがなければWarning
が出るはずなのでそれを見て適宜インストールしてください。
Pythonインストール
以下コマンドでインストールできるPythonのバージョンがズラッと出てきます。
$ pyenv install -l
この中から好きなバージョンをインストールします。
今回は3.10.8
をインストールしました。
$ pyenv install 3.10.8
# pyenvでインストールしたPythonの一覧を表示するコマンド
$ pyenv versions
* system
3.10.8
デフォルトバージョンを設定
全ディレクトリで使うPythonのバージョンを設定します
$ pyenv global 3.10.8
$ python -V
Python 3.10.8
poetry環境構築
Rustのインストール
poetryのインストールの中でRustを使っているようなのでインストールします。
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
インストール設定をカスタマイズするか質問されますが
1) Proceed with installation (default)
で良いです。
PATH
は勝手に通してくれます。(通してくれなかったら手動で設定してください。)
インストール後、コマンドを叩いてインストールが無事できているかを確認します。
$ cargo -V
$ rustc -V
$ rustup -V
# バージョンが出てきたら大丈夫です。
Poetryインストール
公式サイトに従ってインストールします。
$ curl -sSL https://install.python-poetry.org | python3 -
インストール完了後、PATH
を通します。再び.bashrc
の末尾に追加してください。
$ vim ~/.bashrc
# 末尾に以下を追加
export PATH="$HOME/.local/bin:$PATH"
インストールできているかバージョンを表示して確認します。
$ poetry -V
Poetry (version 1.2.2)
※追記
poetryで仮想環境を作る際に.venv
が作成されるのですが、プロジェクト直下に作成されたほうがいいので以下コマンドでそうなるように設定しましょう。
$ poetry config virtualenvs.in-project true
プロジェクトの準備
インストールしたPoetry
でPython環境を作っていきましょう。
まず、プロジェクトディレクトリを作成します。
$ mkdir poetry-demo
$ cd poetry-demo
ディレクトリごとのPytnonのバージョンを設定
各ディレクトリで使うPythonのバージョンを指定したい場合は設定します。
$ pyenv local 3.10.8
$ python -V
Python 3.10.8
.python-version
が作成され、カレントディレクトリ以下では指定したバージョンのPythonが使用されます。
Poetryの初期化
$ poetry init
This command will guide you through creating your pyproject.toml config.
Package name [poetry-demo]:
Version [0.1.0]:
Description []:
Author [n to skip]: n
License []:
Compatible Python versions [^3.10]:
Would you like to define your main dependencies interactively? (yes/no) [yes]
Package to add or search for (leave blank to skip):
Would you like to define your development dependencies interactively? (yes/no) [yes]
Package to add or search for (leave blank to skip):
--省略--
Do you confirm generation? (yes/no) [yes]
色々聞かれますが、とりあえず動くようにしたければ一旦すべてデフォルトで良いと思います。
最後まで行くとpyproject.toml
が作成されます。
ライブラリの追加
※追記
poetry内のpipのバージョンが古いと怒られる場合があるので最初にアップデートしておきましょう。
$ poetry run pip install -U pip setuptools
最後にライブラリを追加してみます。PyPIにあるライブラリは入れれると思います。
$ poetry add [ライブラリ名]
# 開発に必要なもの(本番環境に不要なもの)は -D をつけて追加
$ poetry add -D [ライブラリ名]
インストールがうまく行けばpoetry.lock
が作成されます。
おわりに
MACでPyenv
+Poetry
でのPython環境構築をしたことあったのですんなり行くかと思いきや、色々必要なものねーぞと怒られ若干苦労しました😂
参考文献
Discussion