Pythonパッケージ(ライブラリ)のバージョン確認方法|pip・コード・コマンド別解説
![]() | 20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード |
| | 週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ |
| | 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks |
目次
Pythonパッケージのバージョン確認が重要な理由
Pythonでの開発において、使用しているパッケージ(ライブラリ)のバージョン確認は非常に重要です。バージョンの違いによる互換性問題の回避、セキュリティアップデートの確認、開発環境の統一などに必要不可欠な作業です。
方法1:pipコマンドでバージョン確認
全パッケージのバージョン一覧表示
すべてのパッケージを表示
pip list
特定のパッケージのみ検索
pip list | grep numpy
pip list | findstr pandas
詳細情報を表示
pip show numpy
pip show pandas
アウトデートされたパッケージの確認
更新が必要なパッケージ一覧
pip list --outdated
pip list -o
JSON形式で出力
pip list --format=json
pip list --outdated --format=json
方法2:Pythonコード内でバージョン確認
__version__属性を使用
基本的な確認方法
import numpy
print(numpy.__version__)
import pandas
print(pandas.__version__)
import requests
print(requests.__version__)
複数パッケージを一度に確認
packages = ['numpy', 'pandas', 'matplotlib', 'requests']
for package in packages:
try:
module = __import__(package)
print(f"{package}: {module.__version__}")
except ImportError:
print(f"{package}: Not installed")
pkg_resourcesモジュールを使用
標準的な方法
import pkg_resources
print(pkg_resources.get_distribution("numpy").version)
print(pkg_resources.get_distribution("pandas").version)
エラーハンドリング付き
import pkg_resources
def get_package_version(package_name):
try:
return pkg_resources.get_distribution(package_name).version
except pkg_resources.DistributionNotFound:
return "Not installed"
print(f"numpy: {get_package_version('numpy')}")
print(f"pandas: {get_package_version('pandas')}")
importlib.metadataを使用(Python 3.8+)
Python 3.8以降の推奨方法
from importlib.metadata import version
print(version('numpy'))
print(version('pandas'))
print(version('requests'))
関数化して使用
from importlib.metadata import version, PackageNotFoundError
def check_version(package_name):
try:
return version(package_name)
except PackageNotFoundError:
return "Not installed"
packages = ['numpy', 'pandas', 'matplotlib']
for pkg in packages:
print(f"{pkg}: {check_version(pkg)}")
方法3:requirements.txtとの比較
現在の環境をrequirements.txtに出力
インストール済みパッケージを出力
pip freeze > requirements.txt
pip list --format=freeze > requirements.txt
ローカルパッケージのみ出力
pip freeze --local > requirements-local.txt
requirements.txtとの差分確認
Pythonスクリプトでの比較
import pkg_resources
import re
def compare_with_requirements(req_file):
with open(req_file, 'r') as f:
requirements = f.read().splitlines()
for req in requirements:
if '==' in req:
package, version = req.split('==')
try:
installed = pkg_resources.get_distribution(package).version
if installed != version:
print(f"{package}: required {version}, installed {installed}")
except pkg_resources.DistributionNotFound:
print(f"{package}: not installed")
compare_with_requirements('requirements.txt')
方法4:仮想環境別のバージョン確認
conda環境でのバージョン確認
conda list コマンド
conda list
conda list numpy
conda list | grep pandas
condaとpipの混在確認
conda list --show-channel-urls
venv/virtualenv環境での確認
仮想環境の有効化とバージョン確認
# Windows
venv\Scripts\activate
pip list
# macOS/Linux
source venv/bin/activate
pip list
方法5:システム全体のPython環境確認
Pythonバージョンとパッケージの関係
Pythonバージョン確認
import sys
print(sys.version)
print(sys.version_info)
インストールパスの確認
import numpy
print(numpy.__file__)
import sys
print(sys.path)
複数のPython環境での確認
システムワイドとユーザー環境の確認
python -m pip list
python3 -m pip list
python -m pip list --user
実践的な活用例
開発環境の標準化
環境情報の記録スクリプト
import platform
import sys
from importlib.metadata import version, PackageNotFoundError
def record_environment():
print(f"Python: {sys.version}")
print(f"Platform: {platform.platform()}")
print("Packages:")
important_packages = [
'numpy', 'pandas', 'matplotlib', 'scikit-learn',
'requests', 'flask', 'django', 'fastapi'
]
for pkg in important_packages:
try:
ver = version(pkg)
print(f" {pkg}: {ver}")
except PackageNotFoundError:
print(f" {pkg}: Not installed")
record_environment()
バージョン互換性チェック
最小要求バージョンのチェック
from packaging import version
from importlib.metadata import version as get_version
def check_minimum_version(package_name, min_version):
try:
installed_version = get_version(package_name)
if version.parse(installed_version) >= version.parse(min_version):
print(f"{package_name} {installed_version} OK (>= {min_version})")
return True
else:
print(f"{package_name} {installed_version} NG (< {min_version})")
return False
except Exception as e:
print(f"{package_name}: {e}")
return False
# 使用例
check_minimum_version('numpy', '1.20.0')
check_minimum_version('pandas', '1.3.0')
トラブルシューティング
よくある問題と解決法
ModuleNotFoundErrorの対処
try:
import numpy
print(f"numpy: {numpy.__version__}")
except ImportError:
print("numpy is not installed")
print("Install with: pip install numpy")
__version__属性がない場合
def safe_get_version(module_name):
try:
module = __import__(module_name)
if hasattr(module, '__version__'):
return module.__version__
else:
# pkg_resourcesを使用
import pkg_resources
return pkg_resources.get_distribution(module_name).version
except:
return "Version not available"
print(safe_get_version('some_package'))
複数のPython環境での混乱回避
現在のPython実行環境の確認
import sys
import os
print(f"Python executable: {sys.executable}")
print(f"Python version: {sys.version}")
print(f"Current working directory: {os.getcwd()}")
print(f"PYTHONPATH: {sys.path}")
バージョン管理のベストプラクティス
requirements.txtの効果的な管理
開発用requirements-dev.txt
# requirements-dev.txt
numpy>=1.21.0
pandas>=1.3.0
matplotlib>=3.4.0
jupyter>=1.0.0
pytest>=6.0.0
本番用requirements.txt
# requirements.txt
numpy==1.21.5
pandas==1.3.5
requests==2.28.1
バージョン固定vs範囲指定
セマンティックバージョニングの活用
# 推奨パターン
numpy>=1.21.0,<2.0.0 # メジャーバージョン固定
pandas~=1.3.0 # マイナーバージョン固定
requests>=2.25.0 # 最小バージョン指定
自動化とCI/CD統合
GitHub Actionsでのバージョンチェック
バージョン確認ワークフロー
name: Check Package Versions
on: [push, pull_request]
jobs:
version-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: pip install -r requirements.txt
- name: Check versions
run: |
pip list
python -c "import sys; print(sys.version)"
定期的なバージョンチェックスクリプト
更新確認の自動化
import subprocess
import json
def check_outdated_packages():
result = subprocess.run(
['pip', 'list', '--outdated', '--format=json'],
capture_output=True, text=True
)
if result.returncode == 0:
outdated = json.loads(result.stdout)
if outdated:
print("Outdated packages:")
for pkg in outdated:
print(f" {pkg['name']}: {pkg['version']} -> {pkg['latest_version']}")
else:
print("All packages are up to date")
else:
print("Error checking packages")
check_outdated_packages()
まとめ
Pythonパッケージのバージョン確認は、安定した開発環境の維持に不可欠です。用途に応じて適切な方法を選択することで、効率的なパッケージ管理が可能になります。
- 日常的な確認:
pip list、pip show - コード内での確認:
importlib.metadata.version() - 環境の記録:
pip freeze - 自動化: スクリプトとCI/CD統合
定期的なバージョンチェックと適切な依存関係管理により、セキュリティリスクの軽減と開発効率の向上を実現できます。特に本番環境では、バージョンの固定と定期的な更新計画が重要です。
■「らくらくPython塾」が切り開く「呪文コーディング」とは?
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座
![]() | 20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード |
| | 週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ |
| | 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks |


