Python 仮想環境の有効化と無効化の方法

PythonBeginner
オンラインで実践に進む

はじめに

Python の仮想環境は、Python プロジェクトにおける依存関係を管理するための不可欠なツールです。これらは、システムのグローバルな Python インストールに影響を与えることなく、パッケージをインストールできる隔離された空間を作成します。この隔離により、同じパッケージの異なるバージョンを必要とする可能性のある、異なるプロジェクト間の競合を回避できます。

この実験(Lab)では、Python の仮想環境を作成、アクティブ化、および非アクティブ化する方法を学びます。これらのスキルは Python 開発者にとって基本であり、プロジェクトのクリーンで整理された、再現可能な開発環境を維持するのに役立ちます。

Python 仮想環境の理解と作成

まず、Python 仮想環境とは何か、そしてなぜ重要なのかを理解してから、実際に作成してみましょう。

Python 仮想環境とは?

Python 仮想環境は、隔離された Python インタープリターのインストールです。仮想環境をアクティブ化すると、インストールするパッケージは、システム全体の Python インストールではなく、その環境のプライベートディレクトリに配置されます。この隔離には、いくつかの利点があります。

  • 異なるプロジェクトで同じパッケージの異なるバージョンを使用できます
  • 必要なパッケージの正確なリストを他の人と簡単に共有できます
  • システムの Python をクリーンで整理された状態に保つことができます

最初の仮想環境の作成

Python 3.3 以降には、仮想環境を作成するための推奨ツールである venv モジュールが含まれています。最初の仮想環境を作成してみましょう。

  1. まず、プロジェクトディレクトリにいることを確認します。

    mkdir -p ~/project/python_env_demo
    cd ~/project/python_env_demo
  2. 次のコマンドを実行して、myenv という名前の新しい仮想環境を作成します。

    sudo apt-get update
    sudo apt-get install python3.10-venv -y
    python3 -m venv myenv
  3. 作成されたものを見てみましょう。

    ls -la myenv

    次のような出力が表示されるはずです。

    total 20
    drwxrwxr-x 5 labex labex 4096 Sep 14 10:00 .
    drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 ..
    drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 bin
    drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 include
    drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 lib
    -rw-rw-r-- 1 labex labex   70 Sep 14 10:00 pyvenv.cfg

venv コマンドは、いくつかのサブディレクトリを持つ myenv というディレクトリを作成しました。最も重要なものは次のとおりです。

  • bin: Python インタープリター、pip、およびアクティベーションスクリプトが含まれています
  • lib: この環境にインストールされたパッケージが含まれています
  • pyvenv.cfg: 仮想環境の構成ファイル

これで、アクティブ化して使用できる Python 仮想環境が正常に作成されました。

Python 仮想環境のアクティブ化

仮想環境を作成したので、使用する前にアクティブ化する必要があります。アクティブ化すると、シェル(shell)の環境変数が変更され、システム全体の Python インストールではなく、仮想環境の Python インタープリターとパッケージが使用されるようになります。

仮想環境をアクティブ化する方法

  1. プロジェクトディレクトリにいることを確認します。

    cd ~/project/python_env_demo
  2. 次のコマンドを実行して、仮想環境をアクティブ化します。

    source myenv/bin/activate
  3. コマンドプロンプトが変更されたことに注目してください。プロンプトの先頭に、括弧で囲まれた仮想環境の名前が表示されるようになりました。

    (myenv) labex:python_env_demo/ $

    この視覚的なインジケーターは、仮想環境内で作業していることを思い出させてくれます。

アクティブ化の確認

仮想環境がアクティブで正しく動作していることを確認するには、以下を確認できます。

  1. どの Python インタープリターが使用されているか:

    which python

    次のような出力が表示されるはずです。

    /home/labex/project/python_env_demo/myenv/bin/python

    これは、python コマンドが、システム全体のものとは異なり、仮想環境内の Python インタープリターを指していることを示しています。

  2. どの pip (Python パッケージインストーラー) が使用されているか:

    which pip

    次のような出力が表示されるはずです。

    /home/labex/project/python_env_demo/myenv/bin/pip

    これは、システム Python ではなく、仮想環境にパッケージをインストールすることを確認します。

  3. Python のバージョンを確認します。

    python --version

    出力には、仮想環境で使用されている Python のバージョンが表示されます。

これで、Python 仮想環境が正常にアクティブ化されました。実行する Python コマンドとインストールするパッケージは、システムの Python インストールではなく、この隔離された環境を使用します。

仮想環境へのパッケージのインストール

仮想環境の主な利点の 1 つは、システム全体の Python インストールから隔離された Python パッケージをインストールして管理できることです。アクティブ化された仮想環境にパッケージをインストールする方法を見てみましょう。

pip を使用したパッケージのインストール

  1. 仮想環境がまだアクティブ化されていることを確認します。コマンドプロンプトの先頭に (myenv) が表示されるはずです。アクティブ化されていない場合は、次のようにしてアクティブ化します。

    source myenv/bin/activate
  2. HTTP リクエストの作成によく使用される requests という単純なパッケージをインストールしてみましょう。

    pip install requests

    ダウンロードとインストールのプロセスを示す出力が表示されます。

  3. インストールされたパッケージのリストを確認して、パッケージがインストールされたことを確認します。

    pip list

    リストに requests とその依存関係が表示されるはずです。

    Package            Version
    ------------------ ---------
    certifi            2025.1.31
    charset-normalizer 3.4.1
    idna               3.10
    pip                22.0.2
    requests           2.32.3
    setuptools         59.6.0
    urllib3            2.3.0

インストールされたパッケージの使用

requests パッケージをテストする簡単な Python スクリプトを作成してみましょう。

  1. エディターを開き、~/project/python_env_demo ディレクトリに test_requests.py という新しいファイルを作成します。

    import requests
    
    response = requests.get('https://httpbin.org/get')
    print(f"Status Code: {response.status_code}")
    print(f"Content Type: {response.headers['content-type']}")
    print("\nResponse Body Preview:")
    print(response.text[:300] + "...")
  2. ファイルを保存して実行します。

    python test_requests.py
    run test_requests.py
  3. 次のような出力が表示されるはずです。

    Status Code: 200
    Content Type: application/json
    
    Response Body Preview:
    {
    "args": {},
    "headers": {
    "Accept": "_/_",
    "Accept-Encoding": "gzip, deflate",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.32.3",
    "X-Amzn-Trace-Id": "Root=1-67ca4e9a-3b65928a0af016e74bc867b7"
    },
    "origin": "47.251.8.222",
    "url": "https://httpbin.org/g...

これは、requests パッケージが仮想環境に正常にインストールされ、正しく動作していることを示しています。

Python 仮想環境の非アクティブ化

仮想環境での作業が完了したら、システムのグローバル Python 環境に戻りたい場合があります。このプロセスは非アクティブ化と呼ばれます。

仮想環境を非アクティブ化する方法

  1. 現在、仮想環境がアクティブ化されていることを確認します。コマンドプロンプトの先頭に (myenv) が表示されるはずです。

  2. 仮想環境を非アクティブ化するには、単に次を実行します。

    deactivate
  3. コマンドプロンプトが通常の状態に戻ったことに注目してください。 (myenv) プレフィックスが消えました。

    labex:python_env_demo/ $

非アクティブ化の確認

仮想環境が非アクティブ化され、システムの Python の使用に戻ったことを確認するには、次のチェックを実行します。

  1. どの Python インタープリターが使用されているかを確認します。

    which python3

    次のような出力が表示されるはずです。

    /usr/bin/python3

    これは、python3 コマンドが、システム全体の Python インタープリターを指していることを示しています。

  2. 先ほど作成したスクリプトを実行してみます。

    python3 test_requests.py

    requests パッケージがシステムの Python にインストールされているかどうかによって、エラーが表示される場合があります。

    Traceback (most recent call last):
      File "/home/labex/project/python_env_demo/test_requests.py", line 1, in <module>
        import requests
    ModuleNotFoundError: No module named 'requests'

    このエラーは、requests パッケージがシステムの Python ではなく、仮想環境にインストールされたために発生します。これは、仮想環境の主な利点の 1 つであり、さまざまなプロジェクトのパッケージを分離します。

仮想環境の再アクティブ化

プロジェクトで再び作業する必要がある場合は、仮想環境を簡単に再アクティブ化できます。

source myenv/bin/activate

コマンドプロンプトには再び (myenv) が表示され、仮想環境がアクティブであることを示します。

一般的な仮想環境コマンドの概要

以下は、これまで説明したコマンドのクイックリファレンスです。

コマンド 説明
python3 -m venv myenv "myenv" という名前の新しい仮想環境を作成します。
source myenv/bin/activate 仮想環境をアクティブ化します。
pip install package_name アクティブな仮想環境にパッケージをインストールします。
pip list アクティブな仮想環境にインストールされているパッケージを一覧表示します。
deactivate 現在の仮想環境を非アクティブ化します。

これらのコマンドは、Python 仮想環境を操作するための基礎となり、プロジェクトの分離された Python 環境を作成、使用、および管理できます。

まとめ

この実験(Lab)では、Python 仮想環境を操作するための基本的なスキルを習得しました。

  • 仮想環境の概念と利点の理解
  • venv モジュールを使用した新しい仮想環境の作成
  • Python の作業を分離するための仮想環境のアクティブ化
  • pip を使用した仮想環境内でのパッケージのインストール
  • 簡単な Python スクリプトを使用したインストール済みパッケージのテスト
  • 作業が完了したときの仮想環境の非アクティブ化

これらのスキルは、優れた Python 開発プラクティスの基礎となります。仮想環境を使用することで、次のことが可能になります。

  • プロジェクトの依存関係を互いに分離する
  • さまざまなバージョンのパッケージ間の競合を回避する
  • プロジェクトの再現性を高め、共有を容易にする
  • クリーンで整理された Python 開発環境を維持する

仮想環境は、初心者からエキスパートまで、あらゆるレベルの Python 開発者にとって不可欠なツールです。Python の旅を続けるにつれて、仮想環境の使用は開発ワークフローの自然な一部となるでしょう。