Windows OSに干渉しないPython環境を構築したい
Windows上Pythonを使ってプログラム開発すると複数バージョンのPython環境を共存させたいとかインストールされているライブラリが異なる環境を共存させたくなる。一般的にはvirtualenvを使うと思うが、それを使わず簡単に共存させる方法がある。
WinPython
WinPythonはこちらで公開されているWindows用Pythonディストリビューション。これまで様々なバージョンが公開されている。
こちらは何も設定しなければOSと干渉しないものになるので複数バージョンやインストールライブラリが異なる環境を共存させられる。Overviewにもある通りWindows 8/10(11が書き忘れられている)、オープン、ポータブルで科学的、教育的用途のpythonプログラミング環境である。
このポータブルがローカル環境、科学的が様々なライブラリのプレインストールされたものもあることを意味する。
コンテンツについて
例えばトップページで紹介されているバージョン3.11.5のハイライトをみると"Jupyterlab-4.0.6, Numpy-1.25, pandas-2.1.1, scipy-1.11.1, scikit_learn-1.3.1, Poetryと記載がある。
これらのファイルはSourceForge, Githubにアップロードされている。対応するsourceForgeサイトが下記。
このWinpython64-3.11.5.0.exeがハイライト記載があるライブラリがプレインストールされているバージョン、Winpython64-3.11.5.0mkl.exeはIntel Math Kernel Library (MKL)を用いてビルドされたnumpy、scipyを含んだバージョン、Winpython64-3.11.5.0dot.exeは最小限のライブラリだけのバージョンである。これらの実行ファイルは自己解凍形式なのでダブルクリックすると解凍される。システムから「解凍できません」というメッセージが出た場合は「詳細」をクリックし説明を表示させれば(あくまで自己責任で)解凍できるようになる。
解凍したフォルダが下記。ほぼ同じアイコンが並んでいるがWinpython64-3.11.5.0dotではIDLE、Pyzo、WinPythonCommandPrompt.exe、WinPythonInterpreter.exe、WinPythonPowerShellPrompt.exe、WinPythonTerminal.exeくらいしか立ち上がらない。ローカル環境にする場合はWinPythonControlPanel.exeは使わない。
WinPythonのローカル化は各々の環境のみに使えるCommandPrompt、PowerShellが実装されていることによる。これらを使うことで他で解凍された環境から独立させている。各々のCommandPromptよりpip reezeによりインストールされているライブラリを表示すると下記になる。
プレインストールされているライブラリの違い、numpyにmklが含まれているか否かの違いが確認できる。用途に合わせて使い分ければよい。
pip利用法
解凍したフォルダをローカル環境として使う場合、pipはそれぞれのフォルダに含まれるWinPythonCommandPrompt.exeを使う。proxy、trusted-hostを設定したい場合は下記内容を含むpip.iniファイルを作成しpython-3.1.5.amd64フォルダに保存すればよい。
[global]
proxy = http://proxy.ip:port/
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
あとは通常の使い方通りになる。numpy, scipy, pyQtなどのバージョン変更なども可能である。
IDEソフト
Winpython64-3.11.5.0、Winpython64-3.11.5.0mklには設定済みのspyder、VSCodeも含まれているので立ち上げるだけでプログラミングエディターも含まれる。VSCodeは使った経験がないためアドインを追加してもローカル環境が保持されるかは不明。ただ細かい設定不要で使えるのは便利。
まとめ
自己解凍するだけでpythonローカル環境を作る方法でした。ローカル環境が構築できるのだからUSBに解凍すれば環境の持ち運びも可能。管理者権限を持たない一般ユーザー権限でもインストール可能である。これらを考えると大変便利な環境が公開されているのだから積極的に使えば良いと思う。