Windowsで管理者権限なしでpythonコマンドを使えるようにする


環境

  • Windows 11
  • git bash
  • Python 3.12.4

背景

仕事で利用しているPCは管理者権限が貰えないのですが、Pythonを使う必要があったため
管理者権限不要でPythonを使える環境を用意しました。

手順

エンベデッド Pythonのダウンロード

以下サイトにてPythonのダウンロードができるので『Windows embeddable package』をダウンロードします。
https://www.python.org/downloads/release/python-3124/

ダウンロードしたZIPファイルを任意のフォルダに解凍し、その中にあるpython312._pthを修正します。
1行コメントアウトを外すだけです。

■修正前
# import site
■修正後
import site

続いてpythonコマンドにパスを通します。
管理者権限がなくても以下よりPathの設定が可能です。

  • コントロールパネルを開く
  • ユーザーアカウントを開く
  • さらにユーザーアカウントを開く
  • 左メニューにある環境変数の変更を開く
  • ユーザー環境変数内にあるPathを編集し、今回配置したフォルダとそこのScripts配下を追加する。
    • 追加例: pythonをC:¥toolsフォルダの下に解凍した場合は以下2つを追加する。
      • C:¥tools¥python-3.12.4-embed-amd64
      • C:¥tools¥python-3.12.4-embed-amd64¥Scripts
    • 優先度を高めるために「上へ」ボタンで上部に持っていっておくこと

これでPCを再起動すればpythonコマンドが利用可能となっています。

pipコマンドのインストール

次にpipコマンドを利用できるようにします。
まず以下のファイルをpython-3.12.4-embed-amd64フォルダにダウンロードします。
https://bootstrap.pypa.io/get-pip.py

次に、以下コマンドを実行します。
trusted-hostオプションを付けないとエラーとなるのでご注意ください。

$ cd 配置したパス/python-3.12.4-embed-amd64
$ python get-pip.py --trusted-host=files.pythonhosted.org --trusted-host=pypi.org

カレントディレクトリ配下にScriptsフォルダが作られ、そこにpip.exeが生成されます。
すでに前手順でPathには追加済みなので、Path追加は不要です。

これでpythonおよびpipコマンドが利用できるようになりました。
管理者権限が無いPCという事はセキュアな情報を扱うPCだと思うので、常識の範囲&自己責任の範囲でご利用ください。

おまけ:aws cliのインストール

pipが使えると、実はaws cliもインストールできます。
以下コマンドでpip.exeと同じフォルダにawsコマンドが生成されます。

$ pip install awscli

トラブルシューティング

① get-pip.py実行エラー

get-pip.pyをそのまま実行すると以下のようなエラーが発生します。

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)'))': /simple/pip/
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)'))) - skipping
ERROR: Could not find a version that satisfies the requirement pip (from versions: none)
ERROR: No matching distribution found for pip

これはSSL証明書のエラーが発生しているので、上記手順の通りtrusted-hostオプションを付けて実行しましょう。

②pipが無いエラー

pipコマンド実行時に以下エラーが発生する場合があります。

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\tools\python-3.12.4-embed-amd64\Scripts\pip.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'pip'

上記手順の通りpython312._pthにてsiteをimportするようにすれば解決します。

参考