社内の閉域・隔離環境でも、Visual Studio の「Python 開発」ワークロード(PTVS)を確実・安全に導入できるよう、オフラインレイアウトの作成から持ち込み、セットアップ、維持管理、Python 実行環境や pip パッケージのオフライン準備までを一気通貫で解説します。現場でそのまま使えるコマンドとチェックリストを豊富に掲載しています。
Visual Studio 用 Python 拡張機能をオフラインでインストールする方法
質問概要
インターネットに接続できない社内 PC へ Visual Studio の Python 開発ワークロード(PTVS) を導入したい。オフライン用のインストーラー(レイアウト)の入手・作成方法と、実機でのセットアップ手順、さらに運用上の注意点や Python 本体/pip パッケージのオフライン導入手順まで知りたい。
まず押さえる要点(3 分で全体像)
- レイアウト作成は「ブートストラッパー(vs_*.exe)」で行う:
vs_community.exe / vs_professional.exe / vs_enterprise.exeを使い、--layoutでオフライン用パッケージ群を取得します。 - Python ワークロードの ID は
Microsoft.VisualStudio.Workload.Python。--addに指定します。 - 完全オフラインでのクライアント導入は
--noWebを使います。 - 日本語パッケージは
--lang ja-JPを指定。利用可能なロケール一覧は公式の言語ロケール表を参照。 - 容量目安:1 言語で 40〜50 GB 程度(エディションによる)。
- Python 実行環境は別途用意:python.org の CPython もしくは Anaconda/Miniconda のオフライン版を併せて持ち込みます。
クイック手順(要点表)
| ステップ | コマンド / 操作 | 補足ポイント |
|---|---|---|
| ① ブートストラッパー入手 | オンライン PC で Visual Studio の vs_community.exe / vs_professional.exe / vs_enterprise.exe をダウンロード | レイアウト作成は vs_installer.exe ではなく vs_*.exe を使います。 |
| ② レイアウト生成 | REM 管理者権限の cmd で実行 vs_community.exe ^ --layout C:\VSOffline ^ --add Microsoft.VisualStudio.Workload.Python ^ --includeRecommended ^ --lang ja-JP | 容量は 40〜50 GB 目安。必要に応じ --includeOptional、x64/ARM64 両対応なら --arch all。 |
| ③ セキュリティ確認 | レイアウト一式を AV/EDR/静的解析に通す。ハッシュ確認:Get-FileHash または certutil -hashfile ... SHA256 | 証明書関連のエラーが出たらレイアウト内 Certificates を手動インポート。 |
| ④ オフライン PC に持込・導入 | C:\VSOffline\vs_community.exe ^ --noWeb ^ --add Microsoft.VisualStudio.Workload.Python ^ --includeRecommended | --noWeb で外部通信を遮断して導入。 |
| ⑤ Python 本体を導入 | CPython(python.org)のオフラインインストーラー or Anaconda/Miniconda のオフライン版を実行 | PTVS はランタイムを同梱しないため、別途インタープリターを用意。 |
重要な注意点
- 「Download all, then install(すべてダウンロードしてからインストール)」は転送用途ではない:同一マシンでの前取り寄せ機能です。他の PC へ配布する場合は必ず
--layoutで作成したレイアウトを使います。 - オフライン導入は
--noWeb:レイアウトに含まれないコンポーネントを選ぶとダウンロードを試みます。UI を使う場合も、レイアウト作成時と同じ構成に限定してください。 - 証明書エラー対策:Install certificates required for Visual Studio offline installation の手順でレイアウト内の証明書を OS にインポートすると解消します。
実践編:現場で使える詳細手順
オンライン PC でレイアウトを作る
- ブートストラッパーをダウンロード
使うエディションに対応するvs_community.exe/vs_professional.exe/vs_enterprise.exeを取得して、保存先(例:C:\VSOffline)に置きます。 - レイアウト生成コマンド
REM 例:Community + Python ワークロード + 日本語 cd /d C:\VSOffline vs_community.exe --layout C:\VSOffline ^ --add Microsoft.VisualStudio.Workload.Python ^ --includeRecommended ^ --lang ja-JPよく使う追加指定:--includeOptional:オプションまで含めて取り込み。--arch all:x64 と ARM64 の両方のバイナリを含める。--config my.vsconfig:既存環境からエクスポートした構成をそのまま反映。
- 検証・修復
レイアウトの欠落や破損をチェック:--verify
問題があれば--fixで修復(要ネット接続)。vs_community.exe --layout C:\VSOffline --verify REM 修復 vs_community.exe --layout C:\VSOffline --fix - 証明書の準備(必要時)
レイアウト内のCertificatesフォルダーに格納された証明書を、certutilや GUI からインポートします。スクリプトで行う場合の例:REM 管理者権限の cmd certutil -addstore -f "Root" "C:\VSOffline\Certificates\manifestRootCertificate.cer" certutil -addstore -f "Root" "C:\VSOffline\Certificates\manifestCounterSignRootCertificate.cer" certutil -addstore -f "Root" "C:\VSOffline\Certificates\vs_installer_opc.RootCertificate.cer"
オフライン PC でのセットアップ
レイアウト一式をオフライン PC にコピーし、以下のいずれかの方法で導入します。
- コマンドラインで完全オフライン導入
C:\VSOffline\vs_community.exe ^ --noWeb ^ --add Microsoft.VisualStudio.Workload.Python ^ --includeRecommended ^ --passive --norestart - UI で導入:
vs_community.exeを実行 → 表示されたインストーラーで「Python 開発」にチェック。レイアウトにない項目を選ぶとダウンロードを試みるため、選択は最小限に。
Python 実行環境とパッケージのオフライン準備
Python インタープリターの用意
- Visual Studio の Python ワークロードは、Python 本体(CPython 等)を同梱しません。
python.org 版のオフラインインストーラー、または Anaconda/Miniconda のオフラインインストーラーを併せて持ち込み、オフライン PC にインストールします。
pip パッケージの「ホイールハウス」(オフライン倉庫)を作る
オンライン PC で依存関係ごと事前ダウンロードし、オフライン PC で参照するのが確実です。
- 要件定義:社内で使うパッケージを
requirements.txtに列挙。 - 事前ダウンロード(オンライン PC):
py -m pip download -r requirements.txt -d C:\wheelhouse - オフライン導入(オフライン PC):
py -m pip install --no-index --find-links C:\wheelhouse -r requirements.txt - ビルドが必要なパッケージ対策:事前に
pip wheelでホイール化しておくと安定。py -m pip wheel --wheel-dir C:\wheelhouse -r requirements.txt
※ 異なるプラットフォーム向けに取得する場合(例:arm64 用など)は pip download の制約に注意してください(特定条件で --only-binary=:all: の指定が必要)。
運用のコツ:バージョン固定・更新元の制御・差分更新
response.json で初期設定と更新元を固定
レイアウトのルートに自動生成される response.json で、「既定インストール対象(ワークロード・言語)」「推奨コンポーネントの扱い」「更新元(channelUri)」などを定義できます。初期導入時に既定が、そのままクライアントに適用されます。
{
"installChannelUri": ".\\ChannelManifest.json",
"channelUri": "\\\\intranet\\share\\VS2022\\ChannelManifest.json",
"installCatalogUri": ".\\Catalog.json",
"channelId": "VisualStudio.17.Release",
"includeRecommended": true,
"addProductLang": ["ja-JP"],
"add": ["Microsoft.VisualStudio.Workload.Python"]
}
ポイント:社内レイアウトを更新元にするなら channelUri を社内の ChannelManifest.json に向けます。
LTSC(長期サービス)やチャンネルの選択
安定運用が必要なら、LTSC チャンネル(例:VisualStudio.17.Release.LTSC.17.0)での固定も検討。--channelUri / --channelId を組み合わせて制御します。
差分更新(レイアウトのメンテナンス)
レイアウトは同じコマンドで再実行すれば差分更新できます。検証と修復の流れまで含めて 月例パッチ(Patch Tuesday)直後の更新 を習慣化しましょう。
REM 既存レイアウトを最新版へ差分更新
vs_community.exe --layout C:\VSOffline
REM 更新後の整合性チェック
vs_community.exe --layout C:\VSOffline --verify
よく使うコマンドとパラメータ早見表
| 目的 | コマンド例 | 備考 |
|---|---|---|
| レイアウト作成(日本語) | vs_community.exe --layout C:\VSOffline --add Microsoft.VisualStudio.Workload.Python --lang ja-JP | 必要に応じ --includeRecommended --includeOptional。 |
| 完全オフライン導入 | vs_community.exe --noWeb --add Microsoft.VisualStudio.Workload.Python | ネットアクセスをブロックして導入。 |
| レイアウト検証 | vs_community.exe --layout C:\VSOffline --verify | 欠落/破損の検出。 |
| レイアウト修復 | vs_community.exe --layout C:\VSOffline --fix | ネット接続がある環境で実施。 |
| 構成ファイルを使う | vs_community.exe --layout C:\VSOffline --config C:\my.vsconfig | エクスポートした構成を流用。 |
| 多言語/言語指定 | --lang ja-JP / --addProductLang ja-JP | 対応ロケールは公式の一覧を参照。 |
| ARM64 を含める | --arch all | x64 と ARM64 の両方のパッケージを取得。 |
トラブルシューティング
| 症状 | 原因の例 | 対処 |
|---|---|---|
| 「署名が無効」等で失敗 | オフラインで必要なルート/中間証明書が不足 | レイアウト内 Certificates をインポート(certutil スクリプト例を参照)。 |
| インストーラーがネットに出ようとする | レイアウトに含まれないコンポーネントを選択 | --noWeb を付与し、レイアウト作成時と同じワークロードのみに限定。 |
| 容量不足でレイアウト作成が止まる | 領域不足・長いパス | 40〜50 GB 以上を確保。パスは 80 文字未満を推奨。 |
| Python が選べない/実行できない | インタープリター未導入・パス未検出 | CPython/Anaconda を別途オフライン導入。Visual Studio の「Python 環境」で検出を確認。 |
| パッケージ導入で依存関係が解決できない | ホイール未準備・プラットフォーム差異 | pip download / pip wheel でホイールハウスを整備し、--no-index --find-links を使用。 |
セキュリティ&監査(おすすめ手順)
- ハッシュ検証:配布物の真正性確認に
Get-FileHashまたはcertutil -hashfile ... SHA256を利用。記録を残す。 - レイアウトは「読み取り専用共有」+配布用コピー:更新作業は別フォルダーで行い、検証後に切替。
- 更新元を自社レイアウトに固定:
response.jsonのchannelUriを社内に向ける。
スクリプト例:一発で Python 環境まで導入
以下は、オフライン PC で「PTVS + CPython + pip パッケージ」をまとめてセットアップする例です(共有パスは実態に合わせて変更)。
@echo off
set LAYOUT=C:\VSOffline
set WHEELHOUSE=C:\wheelhouse
set PYTHON_EXE=C:\temp\python-3.12.7-amd64.exe
REM 1) 証明書(必要に応じて)
certutil -addstore -f "Root" "%LAYOUT%\Certificates\manifestRootCertificate.cer"
REM 2) PTVS を完全オフラインで導入
"%LAYOUT%\vs_community.exe" --noWeb --passive --norestart ^
--add Microsoft.VisualStudio.Workload.Python --includeRecommended
REM 3) CPython をサイレント導入(全ユーザー/PATH 追加)
"%PYTHON_EXE%" /quiet InstallAllUsers=1 PrependPath=1 Include_launcher=0
REM 4) pip パッケージをホイールハウスから導入
py -m pip install --no-index --find-links "%WHEELHOUSE%" -r "%WHEELHOUSE%\requirements.txt"
FAQ
Q. vs_installer.exe と vs_community.exe の違いは?
A. vs_installer.exe(または setup.exe)はクライアント側のインストーラー本体で、レイアウト作成はできません。レイアウト作成・更新は ブートストラッパー(vs_*.exe) の --layout で行います。 Visual Studio:Use command-line parameters(コマンドライン パラメーター) Visual Studio:Workload and component IDs(ワークロード ID 一覧:Python) Visual Studio:Install certificates for offline installation(証明書インストール) Visual Studio:Configure installation defaults with response file(response.json) pip:pip download / pip install / pip wheel(オフライン導入)
チェックリスト(社内持ち込み前の最終確認)
- ブートストラッパー(vs_*.exe)を最新版に更新した
--layoutで Python ワークロード(Microsoft.VisualStudio.Workload.Python)を含めた--lang ja-JP/必要言語を含めた--arch all(必要時)で x64/ARM64 両方に対応した--verifyでレイアウト整合性チェックを通した/必要なら--fix- SHA-256 ハッシュを採取・保管し、AV/EDR スキャンを通した
response.jsonにchannelUriを設定し更新元を社内に固定した- Python 本体(CPython/Anaconda)を持ち込んだ
- pip のホイールハウス(
requirements.txt+wheelhouse)を用意した
補足:サンプル vsconfig(Python 開発のみ・日本語)
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Workload.Python"
],
"visualStudioEdition": "2022",
"productKey": ""
}
このファイルをエクスポート/配布しておけば、--config で同一構成の再現が容易になります(レイアウト作成時にも使用可)。

コメント