閉じる

【Windows/Mac対応】 Python仮想環境のactivateとdeactivate

Pythonの仮想環境は、プロジェクトごとにライブラリや実行ファイルのバージョンを分離するための大切な仕組みです。

本記事ではWindowsとMacの両方でactivate(有効化)とdeactivate(無効化)を行う方法を、初心者の方にも分かるように丁寧に解説します。

仮想環境を正しく有効化できることが、トラブルを減らして快適に開発を進める第一歩です

Python仮想環境のactivate/deactivateの基本

有効化で変わること

仮想環境の「有効化」とは、現在のシェル(端末)で使われるpythonpipの参照先を、その仮想環境内に切り替える操作です。

これにより、インストールや実行の対象が仮想環境のディレクトリ配下に限定されます。

有効化すると、PATHが書き換わり、プロンプト左側に(venv)などの環境名が表示されます

何が具体的に切り替わるのか

  • 実行されるpythonの場所が、仮想環境配下のScripts(Windows)またはbin(Mac)に変わります。
  • pipでインストールされるライブラリの置き場所が、その仮想環境のsite-packagesに変わります。
  • 環境変数VIRTUAL_ENVが設定されます。これによりスクリプト側からも「仮想環境かどうか」を判定できます。
  • プロンプトに(.venv)などの表示が付き、視覚的に分かります。

この切り替えは現在のシェル(ターミナル)の範囲だけに適用され、別のシェルには影響しません

変化を見分けるサンプルプログラム

次のPythonスクリプトは、使用しているPython実行ファイルやsite-packagesの場所などを表示します。

仮想環境の「有効化前後」で実行して違いを確認すると理解が深まります。

Python
# env_report.py
# 仮想環境の状態を可視化するサンプル
import os
import sys
import site
import subprocess

def which(cmd):
    # クロスプラットフォームにコマンドの実体位置を調べる
    try:
        if os.name == "nt":
            # Windows
            out = subprocess.check_output(["where", cmd], text=True, stderr=subprocess.STDOUT)
        else:
            # macOS/Linux
            out = subprocess.check_output(["which", cmd], text=True, stderr=subprocess.STDOUT)
        return out.strip()
    except Exception as e:
        return f"(not found: {e})"

print("Python executable:", sys.executable)        # 実行中のPythonの実体
print("sys.prefix     :", sys.prefix)              # 有効な環境のプレフィックス
print("site-packages  :", site.getsitepackages())  # ライブラリの設置先
print("VIRTUAL_ENV    :", os.environ.get("VIRTUAL_ENV"))
print("which python   :", which("python"))
print("pip -V         :", subprocess.getoutput("python -m pip -V"))  # pipが参照するパス

実行例(システム環境の例):

実行結果
Python executable: /usr/bin/python3
sys.prefix     : /Library/Frameworks/Python.framework/Versions/3.12
site-packages  : ['/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages']
VIRTUAL_ENV    : None
which python   : /usr/bin/python3
pip -V         : pip 24.x from .../python3.12/site-packages/pip (python 3.12)

実行例(仮想環境を有効化後の例):

実行結果
Python executable: /path/to/project/.venv/bin/python
sys.prefix     : /path/to/project/.venv
site-packages  : ['/path/to/project/.venv/lib/python3.12/site-packages']
VIRTUAL_ENV    : /path/to/project/.venv
which python   : /path/to/project/.venv/bin/python
pip -V         : pip 24.x from .../.venv/lib/python3.12/site-packages/pip (python 3.12)

パスは環境により異なりますが、仮想環境配下(.venvなど)に切り替わっていれば成功です

無効化とは?

「無効化」は、有効化で行った切り替えを元に戻す操作です。

コマンドはどのシェルでもdeactivateです。

無効化しても仮想環境そのものは削除されず、中のライブラリも残ります

ターミナルを閉じることでも実質無効化と同じ状態になります。

前提

Pythonが入っていることを確認

Windowsではpy --versionまたはpython --version、Macではpython3 --versionで確認します。

バージョンが表示されない場合は、まずPythonをインストールしてください

PowerShell
# Windows (PowerShell)
py --version
python --version
Shell
# macOS (Terminal)
python3 --version

仮想環境を「初回のみ」作成しておく

プロジェクト直下に.venvという名前で作るのが一般的です。

作成は最初の1回だけでOKで、以降はactivate/deactivateで切り替えます

PowerShell
# Windows (PowerShell/コマンドプロンプトどちらでも可)
# 推奨: プロジェクトフォルダで実行
py -m venv .venv
# または
python -m venv .venv
Shell
# macOS (Terminal)
python3 -m venv .venv

早見表(主要シェルの有効化コマンド)

OSシェル有効化コマンド
WindowsPowerShell. ..venv\Scripts\Activate.ps1
Windowsコマンドプロンプト.venv\Scripts\activate
WindowsGit Bash(MSYS2系)source .venv/Scripts/activate
macOSzsh/bashsource .venv/bin/activate
macOSfishsource .venv/bin/activate.fish
macOScsh/tcshsource .venv/bin/activate.csh

シェルの種類ごとに有効化スクリプトの拡張子や置き場所が異なる点に注意してください

Windowsでの有効化/無効化

PowerShellで有効化

PowerShellでは「ドットソース(dot-sourcing)」が必要です。

ドット+半角スペース+パスの順で実行します。

PowerShell
# プロジェクト直下にいる前提
# ドット + 半角スペース + スクリプトの相対パス
. .\.venv\Scripts\Activate.ps1

パスにスペースがある場合は引用符で囲みます。

PowerShell
# 例: C:\Users\me\My Project\.venv\Scripts\Activate.ps1
. "C:\Users\me\My Project\.venv\Scripts\Activate.ps1"

成功すると、プロンプトが(.venv)のように変化します。

以降のpythonpipは仮想環境配下のものが使われます

コマンドプロンプト

コマンドプロンプトではactivate.batを実行します。

Batch File
REM プロジェクト直下にいる前提
.venv\Scripts\activate
REM または拡張子を明示
.venv\Scripts\activate.bat

無効化のコマンド

PowerShellでもコマンドプロンプトでも同じで、次のコマンド1行です。

PowerShell
deactivate

無効化は現在のシェルだけに作用し、仮想環境自体は残ります

確認方法

最も確実なのは、実行ファイルの場所を確認することです。

PowerShell
# PowerShell
where python
python -V
python -m pip -V
実行結果
C:\path\to\project\.venv\Scripts\python.exe
Python 3.12.x
pip 24.x from C:\path\to\project\.venv\Lib\site-packages\pip (python 3.12)

where python.venv\Scripts\python.exeが最上位に出ていれば有効化できています

実行ポリシーエラーの対処

PowerShellは既定でスクリプト実行を制限しています。

そのため有効化時に次のエラーが出ることがあります。

text
<mark style="background-color:rgba(0, 0, 0, 0);color:#cf2e2e" class="has-inline-color"><strong>Activate.ps1 cannot be loaded because running scripts is disabled on this system.</strong></mark>

この場合は、セッション限定で実行を許可するのが安全です。

PowerShell
# 現在のセッションだけ設定 (推奨)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
# その後に再度:
. .\.venv\Scripts\Activate.ps1

あるいは、ユーザー単位で許可することもできます(より恒久的)。

PowerShell
# ユーザー範囲のみ
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

ダウンロードしたActivate.ps1がブロックされている場合はUnblock-Fileも有効です。

PowerShell
Unblock-File .\.venv\Scripts\Activate.ps1

システム全体(Machine)に対する緩和やUnrestrictedは不要かつリスクが高いので避けましょう

もしポリシー変更が難しい場合は、コマンドプロンプトで.venv\Scripts\activateを使う回避策もあります。

Macでの有効化/無効化

ターミナル

macOSの標準シェルはzshです。

次のいずれかで有効化します。

Shell
# zsh/bash 共通
source .venv/bin/activate
# 省略形
. .venv/bin/activate

fishを使っている場合はactivate.fishを使います

fish
# fish シェル
source .venv/bin/activate.fish

無効化のコマンド

共通でdeactivateです。

Shell
deactivate

確認方法

whichpythonの実体とpip -Vを確認します。

Shell
which python
python -V
python -m pip -V
実行結果
/Users/me/path/to/project/.venv/bin/python
Python 3.12.x
pip 24.x from /Users/me/path/to/project/.venv/lib/python3.12/site-packages/pip (python 3.12)

.venv/bin/pythonが使われていれば有効化できています

activateできない時のチェックリスト

venvフォルダの場所と名前を確認

まず、プロジェクト直下に仮想環境フォルダが存在するかを確かめます。

一般的な名前は.venvvenvです。

フォルダ名や配置を間違えると、スクリプトのパスが合わず有効化できません

PowerShell
# Windows
dir
# 例: .venv フォルダが表示されること
Shell
# macOS
ls -la
# 例: .venv ディレクトリが見えること

シェルの種類を確認

シェルごとに有効化方法が違います

macOSではecho $SHELLで確認できます。

Shell
echo $SHELL
# 例: /bin/zsh または /bin/bash

Windowsでは、PowerShellかコマンドプロンプトかをまず見分けます。

PowerShellはプロンプトにPSが付くのが特徴で、実行するファイルはActivate.ps1です。

コマンドプロンプトはactivate.batを実行します。

Git Bashを使う場合はsource .venv/Scripts/activateです

作業ディレクトリが合っているか確認

有効化コマンドは、仮想環境のあるプロジェクト直下で実行するのが基本です

別の場所にいると、相対パスが外れてエラーになります。

プロジェクトにcdで移動してから実行しましょう。

Shell
cd /path/to/project
source .venv/bin/activate

既に有効化されていないか確認

既に有効化済みであるのに再度有効化しようとしてエラーになる場合があります。

環境変数VIRTUAL_ENVの有無で判断できます。

PowerShell
# Windows PowerShell
$env:VIRTUAL_ENV
Shell
# macOS
echo $VIRTUAL_ENV

値が表示されていれば有効化中です。

一度deactivateしてから再度有効化してください。

同じシェルで複数の仮想環境を同時に有効化することはできません

エラーメッセージをそのまま検索する

つまずいた時は、表示されたエラーメッセージ全文をそのまま検索するのが最短です。

例えばPowerShellで次のような赤いエラーが出た場合は、上で紹介した実行ポリシーの対処を適用してください。

text
<mark style="background-color:rgba(0, 0, 0, 0);color:#cf2e2e" class="has-inline-color"><strong>... cannot be loaded because running scripts is disabled on this system.</strong></mark>

また、Activate.ps1activateの「ファイルが見つからない」系エラーは、フォルダ名やカレントディレクトリのミスが典型原因です。

引用符でパスを囲う、バックスラッシュとスラッシュの違いに注意するなど、パス表記を丁寧に見直しましょう。

まとめ

仮想環境の有効化(activate)と無効化(deactivate)は、Python開発の土台となる基本操作です。

有効化によりpythonpipの参照先が仮想環境へ切り替わり、ライブラリの衝突や汚染を防げます

WindowsではPowerShellのドットソースや実行ポリシー、Macではシェルの種類に特に注意してください。

うまくいかない時は、仮想環境フォルダの存在・シェルの種類・作業ディレクトリ・VIRTUAL_ENVの状態・エラーメッセージの検索という順に落ち着いて確認しましょう。

最後に、「仮想環境の作成は最初の1回だけ。以降は毎回activate、作業後はdeactivate」というリズムを身につけると、日々の開発がぐっと快適になります。

この記事を書いた人
エーテリア編集部
エーテリア編集部

人気のPythonを初めて学ぶ方向けに、文法の基本から小さな自動化まで、実際に手を動かして理解できる記事を書いています。

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!