Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Windowsで環境を極力汚さずにPythonを動かす方法 (Scoop編)

【はじめに】

なぜか着実にview数が伸びていく「Windowsで環境を極力汚さずにPythonを動かす方法」シリーズ1
意外に需要があるようなので、最近のお気に入りの方法を記述します。
本手順は過去に紹介したEmbeddable版と異なり tkintervenv が利用可能だったり、WSL版のようにHW制限を受けないのが特徴です。
また手順が2stepしかなく、非常に簡単です。

【内容】

Windows用のパッケージ管理ツール「Scoop」を利用し、Windows環境を極力汚さずにPythonをインストールして、開発や動作確認を行えるようにします。
(※ ユーザ環境変数PATHが追加/変更されるので、それが気になる人はここで撤退してください)

【手順】

1. Scoopのインストール

まずはパッケージ管理ツール「Scoop」をインストールします。
Scoop自体は非常に軽量なツールであり、Scoopによってインストールされるモジュールはデフォルトではユーザフォルダ内にインストールされるため、Windowsのシステム環境をほとんど汚しません。

Scoopの簡単な導入方法は下記記事を参照してください。
【Scoopを使った環境構築】- Qiita

とりあえず使うことができればいいという方は、PowerShellから下記コマンドを実行してScoopをインストールしてください。
ポリシー変更のメッセージが出てきたら「Y」を入力して先に進んでください。

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

2. Pythonのインストール

Scoopがインストールできたら、Pythonのインストールを行います。
PowerShellまたはコマンドプロンプトから下記のコマンドを実行してください。

scoop install python

以上でPythonのインストールは完了です。

Pythonを実行するにはコマンドプロンプトなどから python または python3 で起動します。
あとは pip install で必要モジュールをインストールするなり、python -m venv で仮想環境を作るなり好きにしてください。

なお、本手順でインストールしたPythonは、起動時に %userprofile%\scoop\shims 内のコマンドが呼び出されますが、実体は %userprofile%\scoop\apps\python に配置されています。

【補足 - Pythonのバージョンについて その1】

Scoopによるインストールは基本的に最新版がインストールされます。
例えば scoop install python を実行した場合、本記事記載時点(2020/09/02)では Python 3.8.5 がインストールされます。
別のバージョンをインストールしたい場合には、少し追加で作業が必要になります。

Python 2.73.53.63.7など古いバージョンが必要な場合は以下を実行してください。

scoop install git         # 以下の作業で必要になるため Git をインストールする
scoop bucket add versions # versions bucketの追加
scoop install python37    # python3.7の「最新版」をインストール

なお、インストールできるバージョンは上記コマンドで、 scoop bucket add versions を実行したあとで scoop search python で確認することが出来ます。

# パッケージを検索
scoop search python
#=>'main' bucket:
#=>    aws (1.18.44) --> includes 'python.exe'
#=>    python (3.8.5)
#=>    winpython (3.8.5.0)
#=>
#=>'versions' bucket:
#=>    anaconda2 (2019.10) --> includes 'python.exe'
#=>    miniconda2 (4.7.12.1) --> includes 'python.exe'
#=>    python-alpha (3.9.0b5)
#=>    python-beta (3.8.4rc1)
#=>    python27-beta (2.7.18rc1)
#=>    python27 (2.7.18)
#=>    python35 (3.5.4)
#=>    python36 (3.6.8)
#=>    python37 (3.7.9)

また、本手順でインストールできるのは各バージョンの最新版のみです。
細かいリビジョンを指定する方法もありますが、ここでは割愛します。

なお、上記で記載したとおりScoopでインストールしたコマンドは %userprofile%\scoop\shims のコマンドが呼び出されますが、複数のバージョンをインストールした際には、ここの中が最後にインストールされたものに上書きされ、意図しないバージョンで実行される場合があります。
基本的にはバージョンに応じたコマンドで意図したバージョンで実行することが可能です。
(上記の例の場合は python または python37)
しかし、共通コマンドである python3idel/idle3 などのコマンド類は、最後にインストールされたバージョンで実行されてしまいます。
これを修正するためには scoop reset コマンドを利用することで %userprofile%\scoop\shims 内のコマンド類を修正できます。
上記例の場合では以下のようになります。

# 現行バージョンの確認 (最終インストールは3.7.9)
python3 -V
#=>Python 3.7.9

# 3.7.9から最新バージョンに切り替える
scoop reset python
#=>Resetting python (3.8.5).
#=>Linking ~\scoop\apps\python\current => ~\scoop\apps\python\3.8.5
#=>Creating shim for 'python'.
#=>WARN  Overwriting shim to python.exe installed from python37
#=>Creating shim for 'pythonw'.
#=>WARN  Overwriting shim to pythonw.exe installed from python37
#=>Creating shim for 'python3'.
#=>WARN  Overwriting shim to python.exe installed from python37
#=>Creating shim for 'idle'.
#=>WARN  Overwriting shim to idle.bat installed from python37
#=>Creating shim for 'idle3'.
#=>WARN  Overwriting shim to idle.bat installed from python37

# バージョン変更の確認 (3.7.9から3.8.5に変わっている)
python3 -V
#=>Python 3.8.5

# 最新版から3.7系に変更する
scoop reset python37
#=> (出力省略)

# バージョン変更の確認 (3.8.5から3.7.9に変わっている)
python3 -V
#=>Python 3.7.9

【補足 - Pythonのバージョンについて その2】

私は上記の方法でバージョンコントロールは行っていません。
%userprofile%\scoop\apps\ に配置されているPythonの希望するバージョンの実体ファイルを直接叩いて、venv で開発環境ごとに仮想環境を作って管理しています。

# 仮想環境作成例 (PowerShell)
#   コマンドプロンプトで実行する場合は「~」の部分を「%userprofile%」に
#   「activate.ps1」を「activate.bat」に変更してください

# 仮想環境用のフォルダ作成 (必要に応じて適当なフォルダに変更してください)
mkdir c:\venv

##################################################
# Python3.8.5用の仮想環境の作成 (=>c:\venv\python38)
##################################################
~\scoop\apps\python\3.8.5\python -m venv c:\venv\python38

C:\venv\python38\Scripts\activate.ps1    # 仮想環境のactivate
python -V                                # バージョン確認
#=>Python 3.8.5

pip install numpy                        # numpy 「最新」バージョンのインストール
pip install pandas                       # pandas 「最新」バージョンのインストール

pip freeze                               # インストール済みモジュールの確認
#=>numpy==1.19.1
#=>pandas==1.1.1
#=>(以下省略)

deactivate                               # 仮想環境から抜ける


##################################################
# Python3.7.9用の仮想環境の作成 (=>c:\venv\python37)
##################################################
~\scoop\apps\python37\3.7.9\python -m venv c:\venv\python37

C:\venv\python37\Scripts\activate.ps1    # 仮想環境のactivate
python -V                                # バージョン確認
#=>Python 3.7.9

pip install numpy==1.15                  # numpy 1.15のインストール
pip install pandas==1.0                  # pandas 1.0のインストール

pip freeze                               # インストール済みモジュールの確認
#=>numpy==1.15.0
#=>pandas==1.0.0
#=>(以下省略)

deactivate                               # 仮想環境から抜ける


##################################################
# 実環境の確認
##################################################
python -V
#=>Python 3.8.5

pip freeze
#=> (返り値なし)
rhene
製造業向けに機械学習やAIを適用すべく勉強しています。 ラズパイやJetsonなどのエッジデバイスを使ってなにかしたいと思っています。
https://zenn.dev/rhene
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away