Python 移行ノート [obsolete]¶
Caution
2022 年現在は Miniconda を利用している。Miniconda 利用ノート 参照。
私の Windows マシンでの Python のアップグレード作業に必要な手順について記す。まずは長期に亘り安定して利用してきた 2.6 から、2.x 台最終版である 2.7 への移行作業を記す。
そして 2014 年夏、Windows 7 の 64 ビット機に Python 3.4 環境を構築する機会が訪れた。
さらに 2015 年秋、Windows 10 に無料アップグレードしてしばらくしてから Python 3.5 へ移行した。
Note
OS
Windows XP Home Edition SP3
Windows 7 Home Premium x64 SP1
Windows 10 Home x64
Python upgrading
from 2.6.6 to 2.7.3
from 2.7.3 to 3.4.1
from 3.4.1 to 3.5.0
2.6 から 2.7 への移行計画¶
実際のところ、手間をかけて 2.6 から 2.7 へ移行する利点は今のところなさそうに思える。それは 2.7 での新機能を勉強してから判断すればよい。とにかく、アップグレード手順を残しておく。
Python 2.6 site-packages の状態を保存¶
私の環境では pip がインストールされているハズなので、2.6 環境にインストールしたサードパーティー製パッケージを書き出しておく。
ただし、バージョンは不要なので cut にて削っておく。
bash$ cd D:/Python26/lib/site-packages
bash$ pip freeze | cut -d= -f 1 > mypkgs.txt
後ほど mypkgs.txt
をテキストエディターで編集する。
Python 2.7 本体をインストール¶
Python の公式サイトから
python-2.7.3.msi
をダウンロードする。普通に Explorer 上から実行して、Python 2.6 のインストール場所の隣にインストールする。
Python 2.6 フォルダーから一部のファイルをコピーする¶
正直、この作業が必要なのかどうかわかっていない。
sitecustomize.py
を 2.6 フォルダーのsite-packages
フォルダーから 2.7 フォルダーの対応する位置にコピーする。
最初に手動で準備するもの¶
setuptools: インストーラーを利用する。
setuptools-0.6c11.win32-py2.7.exe
のようなファイル名のものをダウンロードページから取得する。pip:
pip.1.1-tar.gz
を入手して、解凍後setup.py
を利用する。bash$ python27 setup.py install
Windows インストーラーを利用するもの¶
pip ではインストールできないものを先にインストールしておく。
と言うより、pip でインストールしたいパッケージ X がパッケージ Y に依存しているとして、Y は Windows インストーラーでインストールするべきものであるとする。先に Y をインストールしておかないと、pip で X をインストールする段になって、Y の扱いが怖いことになりそうだから、ここで述べる手順がある。
私の場合のパッケージ群は次の通り。インストーラーの拡張子は exe だったり msi だったりするが、気にしないで構わないだろう。
PIL: 公式サイトに 2.7 用のものがある。
NumPy: 2.7 OK
SciPy: 2.7 OK
Matplotlib: 2.7 OK
Pygame: 2.7 OK
Py2exe: 2.7 OK
PyQt4: 2.7 OK
pysparse: Python Extension Packages for Windows - Christoph Gohlke を利用させてもらう。
旧環境での pip freeze の出力を利用するもの¶
2.6 環境で pip freeze することで、利用中の site-packages
パッケージが得られる。これを 2.7 環境の pip に食わせて様子見とする。
先ほど得た mypkgs.txt
をテキストエディターで編集する。 PIL, NumPy などのインストーラーモノの行を削除して、このテキストファイルを上書きする。編集後、おもむろに下記コマンドラインを実行する。かなり時間がかかることを覚悟することだ。
bash$ cd D:/Python27/Scripts
bash$ ./pip install -r mypkgs.txt
何度か失敗するかもしれないが、成功したものを
mypkgs.txt
から順次削除していき、再度 pip 呼び出しをすればよい。ログを取るのもよいだろう。
特殊なもの¶
Subversion の Python binding を利用しているため、これをセットアップする。
svn-win32-1.7.6-ap24_py27.zip
をダウンロード。解凍してフォルダーを潜る。下記フォルダーをsite-packages
にコピー。libsvn
svn_python
2.6 のクリーンナップ¶
Windows のコントロールパネル プログラムの追加と削除 を利用して、 Python 2.6 関連のパッケージを全部アンインストールする。
念のため、残骸を確認するべし。自分で作った設定ファイルやらがある場合、適宜修正を加え 2.7 に引っ越す。
Python 2.6.6 をアンインストールするのはパッケージを全部片付けてからの最後。
ツールや環境変数の修正¶
移行、完全に個人的なメモ。他の人には通用しない作業だ。
.bashrc
¶
この設定をする理由は、私が Cygwin で bash
をインタラクティブシェルとして利用しており、そこから Windows 用の Python を呼び出すことが多いことによる。
エイリアス python27
を追加。
alias a='alias'
a python26='D:/Python26/python.exe'
a python27='D:/Python27/python.exe'
.bash_profile
¶
$PATH
に Python 関連の記述がある場合は修正する。設定理由は上述と同じ。
SendToCygwin.ini
¶
「Cygwin に送る」というユーティリティがあり、私はこれを偏愛している。その設定ファイルを更新しておく。
*.py =python27 %F ||
*.pyw =python27 %F ||
環境変数 PATH
¶
D:\Python26
を D:\Python27
に置換。
2.7 から 3.4 への移行¶
Python 自身のメジャーバージョンアップもさることながら、OS も 64 ビット対応のものである。
Python 3.4 本体をインストールする¶
次の 2 ステップで十分だ。
Python の公式サイトから
python-3.4.1.amd64.msi
をダウンロードする。インストーラーを実行する。インストールオプションで pip が含まれるようにすること。
サードパーティー製パッケージのインストール¶
インストーラーからインストールするものと、pip でインストールするものに大別して作業することにした。
Windows インストーラーを利用するもの¶
筆者環境では、次のパッケージ群は Python Extension Packages for Windows - Christoph Gohlke のビルドを利用した。わかりやすさのため、インストーラーのファイル名そのものをここに記す。
matplotlib-1.3.1.win-amd64-py3.4.exe
numpy-MKL-1.8.2.win-amd64-py3.4.exe
Pillow-2.5.1.win-amd64-py3.4.exe
pygame-1.9.2a0.win-amd64-py3.4.exe
PyOpenGL-3.1.0.win-amd64-py3.4.exe
PyOpenGL-accelerate-3.1.0.win-amd64-py3.4.exe
pyparsing-2.0.2.win-amd64-py3.4.exe
scipy-0.14.0.win-amd64-py3.4.exe
PyQt5 など、それ以外のパッケージについては、それぞれの公式サイト提供のビルドを利用した。
旧環境での pip freeze の出力を利用するもの¶
旧環境 (2.7) の pip freeze の出力結果をテキストファイルに保存 (
mypkgs.txt
) する。mypkgs.txt
を編集し、Windows インストーラーでインストールしたパッケージの行を削除する。前回移行時と同様の手順に従う。
bash$ cd D:/Python34/Scripts
bash$ ./pip install -r mypkgs.txt
2.7 のクリーンナップ¶
前述の 2.6 のクリーンナップと同様。
ツールや環境変数の修正¶
SendToCygwin の Windows 7 版が存在しないことを除いて、前述と同様。
環境変数¶
以前は sitecustomize.py
で行っていたエンコーディング関連の指定を環境変数設定で実現する。 Windows のユーザー環境変数に次のものを指定しておくのが具合がよい。
環境変数 |
設定値 |
---|---|
|
UTF-8 |
|
自作モジュールのパス |
ドットファイル¶
.bashrc
の Python 関連のコードを修正。.bash_profile
の Python 関連のコードを修正。
2to3.py
関連¶
もっとも面倒な作業は、これまで自分が書いたすべての Python コードを Python 3 仕様に書き改めることだ。しかし $PYTHONDIR/Tools/Scripts/2to3.py
で機械的に処理すれば一応は動きそう。
3.4 から 3.5 への移行¶
OS を Windows 10 にアップグレードしたときには 3.4 環境はビクともしなかった。なので、今回は OS を変えてから初めての Python のアップグレードになる。
Python 3.5 本体をインストールする¶
次の手順を踏む。
Python の公式サイトから
python-3.5.0-amd64.exe
をダウンロードする。インストーラーを実行する。その際は次のような点に気を配りたい。
Customize installation を選択する。
pip は当然必要だ。
Install for all users をオンにして、インストールパスをそれらしい所に設定する。
Visual Studio 2015 の Visual C++ ランタイムをインストールする¶
Python 3.5 は VC++ 2015 でビルドされている。 Python 自身は上述のインストーラーを実施したら即動作するとはいえ、一部のサードパーティー製パッケージがこれを動作環境にあることを必要とする。そのため、Visual Studio 2015 がない環境では別途ランタイムをインストールしておくのが事実上必要な作業になっている。
Google でよいので
visual studio 2015 runtime
などのキーワードで検索をする。Microsoft の提供するダウンロードページがヒットするはずなので、そこで 64 ビット版を入手する。
インストーラーを実行する。オプションなし。
なお、Visual Studio 2015 をインストールする予定があれば Python のアップグレードよりもそれを優先するのがよい。
サードパーティー製パッケージをインストールする¶
むしろこちらがメインの作業だ。
Windows インストーラーを利用するもの¶
言い換えれば諸事情により pip に頼れないパッケージ群のことだ。各パッケージの公式サイトおよび Python Extension Packages for Windows - Christoph Gohlke が配布するインストーラーに頼る。
拡張子が
exe
やmsi
のファイルは、よくあるインストーラー。インストールの順序は任意でよいハズ。拡張子が
whl
のファイルについては、これらをダウンロードしておき pip に処理させるもの。依存パッケージがあるならば、先にインストールを済ませる必要がある。
コツとしては NumPy が一番最初にインストールを済ませるべきものであろう。
lxml-3.4.4-cp35-none-win_amd64.whl
(Christoph)matplotlib-1.4.3-cp35-none-win_amd64.whl
(Christoph)numpy-1.10.0+mkl-cp35-none-win_amd64.whl
(Christoph)pygame-1.9.2a0-cp35-none-win_amd64.whl
(Christoph)PyOpenGL-3.1.1a1-cp35-none-win_amd64.whl
(Christoph)PyOpenGL_accelerate-3.1.1a1-cp35-none-win_amd64.whl
(Christoph)reportlab-3.2.0-cp35-none-win_amd64.whl
(Christoph)scipy-0.16.0-cp35-none-win_amd64.whl
(Christoph)
旧環境での pip freeze の出力を利用するもの¶
インストーラーによる作業がすべて終わってようやく pip が使える。
今回試したらインストーラーではなく pip で済むようになっていたパッケージは次のとおり。
Pillow (
Pillow-3.0.0-cp35-none-win_amd64.whl
)PyOpenGL (
PyOpenGL-3.1.0.tar.gz
): ただしバージョンの関係で上述のインストーラーを採用する。
旧環境のクリーンナップ¶
Windows のコントロールパネル
から 3.4 のパッケージとPython 本体をアンインストールする。D:\Python34
フォルダーを削除する。中に入っている残骸がサードパーティー製パッケージの関連ファイルだけであることを確認できれば、そうする。
ツールや環境変数の修正¶
3.4 から 3.5 への移行に伴う変更は軽微な修正作業になる。
ドットファイル¶
Cygwin bash で作業をするため、主にエイリアスとパスに関わる項目の設定を更新する。
.bashrc
の Python 関連のコードを修正。.bash_profile
の Python 関連のコードを修正。
ConEmu¶
ConEmu の Predefined tasks を更新する。一例を示す。
のTask |
Command |
---|---|
{Python} |
D:\Python35\python.exe -i |
{IPython} |
D:\Python35\Scripts\ipython3.exe |
{isympy} |
D:\Python35\python.exe "D:\home\yojyo\devel\sympy\bin\isympy" -- --profile=sympy |
IPython の各 profile は別途仕込んでおく。
3.5 から 3.6 への移行¶
3.5 運用の途中から Miniconda 環境に移行したので Miniconda 利用ノート に記す。