コンテンツにスキップ

Python環境構築

pyenvを使用してPythonのバージョン管理を行い、プロジェクトごとに独立した仮想環境を構築します。

Terminal window
brew install pyenv

.zshrcに以下を追加:

Terminal window
# pyenv設定
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:$PATH"
eval "$(pyenv init -)"

設定を反映:

Terminal window
source ~/.zshrc
Terminal window
# すべてのバージョンを表示
pyenv install --list
# 特定のバージョンを検索
pyenv install --list | grep 3.11
Terminal window
# 特定バージョンをインストール
pyenv install 3.11.3
# 最新の安定版をインストール(例)
pyenv install 3.12.0

インストール済みバージョンの確認

Section titled “インストール済みバージョンの確認”
Terminal window
pyenv versions
Terminal window
# システム全体のデフォルトバージョンを設定
pyenv global 3.11.3

プロジェクト固有のバージョン設定

Section titled “プロジェクト固有のバージョン設定”
Terminal window
# プロジェクトディレクトリで実行
pyenv local 3.11.3

これにより.python-versionファイルが作成され、そのディレクトリでは指定したバージョンが使用されます。

Terminal window
python --version
pyenv version

Python 3.3以降は標準モジュールのvenvを使用して仮想環境を作成します。

Terminal window
# 仮想環境の作成
python -m venv env
# 仮想環境の有効化
source env/bin/activate
# 仮想環境の無効化
deactivate

virtualenvを使用した仮想環境(オプション)

Section titled “virtualenvを使用した仮想環境(オプション)”
Terminal window
# virtualenvのインストール
pip install virtualenv
# 仮想環境の作成
python -m virtualenv env
# 仮想環境の有効化
source env/bin/activate
  • venvで仮想環境を作成する際、その時点で使用されているPythonバージョンで環境が作成されます
  • pyenvでPythonバージョンを切り替えても、既存の仮想環境のバージョンは変わりません
  • バージョンを変更したい場合は、仮想環境を作り直す必要があります

プロジェクトの依存関係を管理するためのファイルです。

Terminal window
# 現在の環境のパッケージを出力
pip freeze > requirements.txt
# 特定のパッケージのみ出力
pip freeze | grep django > requirements.txt
Terminal window
pip install -r requirements.txt

より高度な依存関係管理:

Terminal window
# pip-toolsのインストール
pip install pip-tools
# requirements.inから requirements.txtを生成
pip-compile requirements.in
# パッケージの同期
pip-sync requirements.txt

プロジェクトのセットアップ例

Section titled “プロジェクトのセットアップ例”
Terminal window
# プロジェクトディレクトリの作成
mkdir my-project && cd my-project
# Pythonバージョンの指定
pyenv local 3.11.3
# 仮想環境の作成と有効化
python -m venv venv
source venv/bin/activate
# 基本パッケージのインストール
pip install --upgrade pip
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
venv/
ENV/
.venv
pip-log.txt
pip-delete-this-directory.txt
.pytest_cache/
  1. パスが正しく設定されているか確認

    Terminal window
    echo $PATH | grep pyenv
  2. .zshrcの設定を再確認

macOSでPythonをビルドする際に必要な依存関係:

Terminal window
# 必要なライブラリをインストール
brew install openssl readline sqlite3 xz zlib tcl-tk
# 環境変数を設定してインストール
LDFLAGS="-L$(brew --prefix openssl)/lib" \
CPPFLAGS="-I$(brew --prefix openssl)/include" \
pyenv install 3.11.3
Terminal window
# 仮想環境のパスを確認
which python
# 正しいパスか確認(venv内のpythonを指しているべき)
# 例: /path/to/project/venv/bin/python
  1. プロジェクトごとに仮想環境を作成

    • グローバル環境を汚染しない
    • 依存関係の衝突を防ぐ
  2. requirements.txtをGitで管理

    • チーム間で環境を統一
    • 再現可能な環境構築
  3. .python-versionファイルをコミット

    • プロジェクトで使用するPythonバージョンを明確化
  4. 定期的な更新

    Terminal window
    # パッケージの更新確認
    pip list --outdated
    # セキュリティアップデートの適用
    pip install --upgrade package-name