Pythonで開発を始めるときの手順

開発では複数のpythonのバージョンを使い分けられると便利.また,各pythonバージョンごとにpipでインストールするモジュールもプロジェクトごとに分けられると便利である.

pythonのバージョンの使い分けにはpyenvを使用する.

インストールするモジュールの使い分けにはpoetryを使用する.

環境構築の準備

pyenv, poetry自体をインストールする.

pyenvのinstall

pyenvの公式ページのインストール手順に従う.

今回はWSL Ubuntu上に構築するので,手順はLinux(Ubuntu)+Bashのものを参照している.

install

$ curl -fsSL https://pyenv.run | bash

.bashrcと.profileに追加設定

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
$ echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
$ echo 'eval "$(pyenv init - bash)"' >> ~/.profile

shellの再起動

$ exec "$SHELL"

pathが通っていること確認

$ pyenv versions
* system (set by /home/harib/.pyenv/version)

pythonのビルドに必要なツールをinstall

$ sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

poetryのinstall

詳細はpoetryのインストール・基本的な使い方を参照.

$ curl -sSL https://install.python-poetry.org | python3 -
$ exec "$SHELL"

環境構築

pyenv, poetryを使って開発に必要なものをそろえる.

pyenvでpythonのバージョンを指定

現在install済みのpythonを確認する場合

$ pyenv versions

install可能なバージョン一覧を表示する場合

$ pyenv install -l

# anacondaとかを除外し,3.~だけ表示したい場合の例
$ pyenv install -l | grep -E "^ *3"

特定のバージョンをinstallする例(3番目のマイナーバージョンを省くと最新のものが指定される).

$ pyenv install 3.10

使用するpythonバージョンの指定

特定のバージョンに切り替える.以下の3つを用途に合わせて使い分けるが,プロジェクトのディレクトリごとに開発環境を分けるならpyenv localがよい.

  • pyenv shell <version> : 現在のシェル内でのみ有効
  • pyenv local <version> : 現在のディレクトリ内(サブディレクトリ含む)でのみ有効
  • pyenv global <version> : 現在のユーザーアカウントで有効
# pyenv localの後のバージョンはtab補完で表示できる
$ pyenv local 3.10.16

# 確認
$ python --version
Python 3.10.16

poetryの設定ファイル作成

まずプロジェクト用のディレクトリを作成し,pythonバージョンを指定する.

$ mkdir sample_proj
$ cd sample_proj/
$ pyenv local 3.10.16

poetryでプロジェクト設定ファイルを作成する.

以下の例はpythonのバージョン指定だけ設定している.

$ poetry init
Package name [sample_proj]:
Version [0.1.0]:
Description []:
Author [haribote-prog, n to skip]:
License []:
Compatible Python versions [^3.12]:  3.10.*

Would you like to define your main dependencies interactively? (yes/no) [yes] no
Would you like to define your development dependencies interactively? (yes/no) [yes] no
Do you confirm generation? (yes/no) [yes] yes

デフォルトのpackageモードをoperatingモードに変えるために,生成されたpyproject.tomlファイルに赤字部分を追加する.

[tool.poetry]
name = "sample-proj"
version = "0.1.0"
description = ""
authors = ["haribote-prog"]
readme = "README.md"
package-mode = false

[tool.poetry.dependencies]
python = "3.10.*"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

以下のようにpoetryのpythonの参照先が間違っている場合(以下はバージョンが3.12になっている)は修正を行う.

$ poetry env info
Virtualenv
Python:         3.12.3
Implementation: CPython
Path:           NA
Executable:     NA

Base
Platform:   linux
OS:         posix
Python:     3.12.3
Path:       /usr
Executable: /usr/bin/python3.12

poetryのプロジェクト情報をpoetry envコマンドで修正

$ poetry env use 3.10.16
Creating virtualenv sample-proj-nT50-1kP-py3.10 in /home/harib/.cache/pypoetry/virtualenvs
Using virtualenv: /home/harib/.cache/pypoetry/virtualenvs/sample-proj-nT50-1kP-py3.10
$ poetry env info

Virtualenv
Python:         3.10.16
Implementation: CPython
Path:           /home/harib/.cache/pypoetry/virtualenvs/sample-proj-nT50-1kP-py3.10
Executable:     /home/harib/.cache/pypoetry/virtualenvs/sample-proj-nT50-1kP-py3.10/bin/python
Valid:          True

Base
Platform:   linux
OS:         posix
Python:     3.10.16
Path:       /home/harib/.pyenv/versions/3.10.16
Executable: /home/harib/.pyenv/versions/3.10.16/bin/python3.10

モジュールの追加の例

$ poetry add pandas

# 開発時のみ必要なときはdevグループに追加
$ poetry add jupyterlab --group dev

最終的に以下のようなpyproject.tomlファイルが生成される.

$ cat pyproject.toml
[tool.poetry]
name = "sample-proj"
version = "0.1.0"
description = ""
authors = ["haribote-prog"]
readme = "README.md"
package-mode = false

[tool.poetry.dependencies]
python = "3.10.*"
pandas = "^2.2.3"


[tool.poetry.group.dev.dependencies]
jupyterlab = "^4.3.5"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

開発時

poetry addをした環境でない場合はモジュールをinstallする.

このときもエラーが出るようであれば,上のpoetry envコマンドで設定を行うこと.

$ poetry install

特定のpythonファイルを実行するだけのときは以下のコマンドを叩く.

$ poetry run python <実行したいpythonファイル>

仮想環境に入って作業する場合は以下の2つの方法がある.

# 仮想環境に入る
$ poetry shell

# 色々実行できる
$ python --version
Python 3.10.16
$ jupyter-lab --no-browser

# 仮想環境から抜ける
$ exit

または

# 仮想環境に入る
$ source $(poetry env info --path)/bin/activate

# 仮想環境から抜ける
$ deactivate

コメント

タイトルとURLをコピーしました