現在お買い物カゴには何も入っていません。
Pythonの仮想環境(venv)とパッケージ管理(pip)の基本
1. 仮想環境(venv)とは
仮想環境は、プロジェクトごとに独立したPython環境を作成するためのツールです。これにより、異なるプロジェクトで異なるバージョンのパッケージを使用することができます。
2. 仮想環境の作成と使用
仮想環境の作成
# プロジェクトディレクトリに移動
cd my_project
# 仮想環境の作成
python3 -m venv venv
仮想環境の有効化
# Unix/macOS
source venv/bin/activate
# Windows
venv\Scripts\activate
仮想環境の無効化
deactivate
3. パッケージ管理(pip)
pipの基本
pipはPythonのパッケージ管理ツールで、パッケージのインストール、アップグレード、アンインストールを行います。
パッケージのインストール
pip install package_name
パッケージのアップグレード
pip install --upgrade package_name
パッケージのアンインストール
pip uninstall package_name
インストール済みパッケージの一覧表示
pip list
パッケージの詳細情報
pip show package_name
4. requirements.txtの使用
requirements.txtの作成
プロジェクトで使用しているパッケージを一覧にして、他の開発者が同じ環境を再現できるようにします。
pip freeze > requirements.txt
requirements.txtからパッケージをインストール
pip install -r requirements.txt
5. パッケージの作成と配布
パッケージの構成
以下では従来の方法を説明します。強く推奨されているpyproject.toml
については1別の機会に説明します。
パッケージを作成するためには、以下のようなディレクトリ構造が必要です:
my_package/
├── my_package/
│ ├── __init__.py
│ └── module.py
├── setup.py
└── README.md
setup.pyの例
通常、ソフトウェアの開発はパッケージのビルドを前提としているファイルとパスの構成になっていますので、GitHub等で参考となるプロジェクトの書き方を手本とするのが早道です。参考になるかどうかはわかりませんが、私の管理するプロジェクトのレポジトリはこちらです。
console_scripts
は、例えばLinuxならばシェルコマンドとして動作します。仮想環境が~/.venv3.12
ならば、~/.venv3.12/bin/
以下にインストールされます。コマンドとして呼び出したい関数を指定します2。
from setuptools import setup, find_packages
setup(
name='my_package',
version='0.1',
packages=find_packages(),
install_requires=[
'requests',
],
entry_points={
'console_scripts': [
'my_command=my_package.module:main',
],
},
)
パッケージのビルドと配布
Pythonパッケージユーザーガイド(Python Packaging User Guide)をまず読みましょう。以下のコマンドでは非推奨となった方法も併記します3。
# パッケージのビルド(非推奨となった。旧式)
python setup.py sdist bdist_wheel
# 推奨
python -m build
# PyPIにアップロードするためのツールをインストール
pip install twine
# パッケージのアップロード
twine upload dist/*
6. Gitと仮想環境の管理
.gitignoreの設定
仮想環境のディレクトリをGitの管理対象から除外するために、.gitignoreファイルに以下を追加します。GitHubからコピーしてくると良いでしょう4:
venv/
まとめ
この記事では、Pythonの仮想環境(venv)とパッケージ管理(pip)の基本的な使用方法について説明しました。仮想環境を使用することで、プロジェクトごとに独立した環境を作成し、依存関係の管理が容易になります。また、pipを使用してパッケージのインストールや管理を行うことで、開発効率を向上させることができます。さらに、requirements.txtを使用して環境を再現可能にし、setup.pyを使用してパッケージを作成・配布する方法も紹介しました。