🐍

RaspberryPiのPython環境をPyenv+Poetryで作る

2022/11/22に公開

はじめに

RaspberryPiのPython環境をPyenvPoetryで作ったのでその備忘録的な記事です。

環境

  • 端末: 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
.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
.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環境構築をしたことあったのですんなり行くかと思いきや、色々必要なものねーぞと怒られ若干苦労しました😂

参考文献

https://zenn.dev/kumamoto/articles/9f0b520020bdd0
https://www.kkaneko.jp/tools/raspbian/rasppyenv.html

Discussion