Windows7 (MinGW / MSYS) に virtualenvwrapper を入れたメモ
Windows7 (MinGW / MSYS) に Python 2.7 + virtualenv + Fabric を入れたメモ の続き。
cmd.exe で virtualenv できるようになりましたが、virtualenvに拡張機能を提供する virtualenvwrapper が MinGW / MSYS でも使えるようなので、これを入れてみたメモです。
以下、コマンドは MSYS のシェルにて。
virtualenvwrapper をインストール
virtualenv と同様に easy_install で入れます。
[k_horii@horii ~]$ /c/Python27/Scripts/easy_install virtualenvwrapper
Searching for virtualenvwrapper
Reading http://pypi.python.org/simple/virtualenvwrapper/
Reading http://www.doughellmann.com/projects/virtualenvwrapper/
Best match: virtualenvwrapper 3.7.1
Downloading http://pypi.python.org/packages/source/v/virtualenvwrapper/virtualenvwrapper-3.7.1.tar.gz#md5=17fd8cfe4ef7f569f62f2f3453e3bc02
…中略…
Installed c:\python27\lib\site-packages\virtualenvwrapper-3.7.1-py2.7.egg
…中略…
Installed c:\python27\lib\site-packages\stevedore-0.8-py2.7.egg
…中略…
Installed c:\python27\lib\site-packages\virtualenv_clone-0.2.4-py2.7.egg
Finished processing dependencies for virtualenvwrapper
依存ライブラリと一緒にインストールされました。
こちらを参考に .bashrc に設定を追加します。dhellmann / virtualenvwrapper / source / docs / ja / install.rst — Bitbucket
今後のため、ついでにPythonの関連ディレクトリにもパスを通しておきます。
~/.bashrc
export PATH=/c/Python27:/c/Python27/Scripts:$PATH export WORKON_HOME=$HOME/.virtualenvs export MSYS_HOME=/c/MinGW/msys/1.0 source /c/Python27/Scripts/virtualenvwrapper.sh
反映させて…
[k_horii@horii ~]$ source ~/.bashrc
mkvirtualenv コマンドで仮想環境を作成
[k_horii@horii ~]$ mkvirtualenv oppy
New python executable in oppy\Scripts\python.exe
Installing setuptools.................done.
Installing pip...................done.
(oppy)[k_horii@horii ~]$
プロンプトが変わりました。
(oppy)[k_horii@horii ~]$ ls ~/.virtualenvs/oppy
Include/ Lib/ Scripts/
$WORKON_HOME/仮想環境名 に仮想環境が作成されています。
引数なしの workon コマンドで環境を一覧表示。
[k_horii@horii ~]$ workon
oppy
workon 仮想環境名 で切替えられます。
[k_horii@horii ~]$ workon oppy
(oppy)[k_horii@horii ~]$
前回と同様、仮想環境ディレクトリ内の Lib/distutils/distutils.cfg に MinGW でコンパイルさせるための設定を追加します。
(oppy)[k_horii@horii ~]$ echo -e "\n[build]\ncompiler=mingw32\n" >> $WORKON_HOME/oppy/Lib/distutils/distutils.cfg
直接パスを指定して、Pywin32 を入れます。
(oppy)[k_horii@horii ~]$ easy_install ~/Python/pywin32-218.win32-py2.7.exe
Fabric を入れます。
(oppy)[k_horii@horii ~]$ pip install fabric
…中略…
(oppy)[k_horii@horii ~]$ fab --version
Fabric 1.6.0
Paramiko 1.10.1
OKです。
virtualenvwrapper の日本語版ドキュメントがこちらにありました。virtualenvwrapper 3.5 — virtualenvwrapper 3.5 documentation
仮想環境の作成時にフックスクリプトを実行する
ユーザカスタマイズ — virtualenvwrapper 3.5 documentation によれば、仮想環境を作成する際 $WORKON_HOME 直下に決められたファイル名で配置したフックスクリプトを実行できるようです。
前述の Lib/distutils/distutils.cfg への追記は premkvirtualenv フック(仮想環境が作成された後、環境が切り替わる前に実行される。引数は新しい環境名)に書けば良いでしょうか。
試しに書いてみます。
~/.virtualenvs/premkvirtualenv
#!/bin/sh # This hook is run after a new virtualenv is created and before it is activated. echo -e "\n[build]\ncompiler=mingw32\n" >> $WORKON_HOME/$1/Lib/distutils/distutils.cfg
これでいけるはず…新たな仮想環境 chippy を作成してみます。
$ mkvirtualenv chippy
…中略…
(chippy)[k_horii@horii ~]$ cat $WORKON_HOME/chippy/Lib/distutils/distutils.cfg
# This is a config file local to this virtualenv installation
# You may include options that will be used by all distutils commands,
# and by easy_install. For instance:
#
# [easy_install]
# find_links = http://mylocalsite
[build]
compiler=mingw32
うまくいきました。
Pywin32 のインストールは postmkvirtualenv フック(新しい環境が作成されてアクティブ化された後で読み込まれる)に書けば良いでしょうか。
Tips を見ると「新しい環境に共通ツールを自動的にインストールする」という項目がありました。
Tips とトリック — virtualenvwrapper 3.5 documentation
私はこの postmkvirtualenv を基本的なセットアップを行うインストールに使用します。
$ cat postmkvirtualenv #!/usr/bin/env bash curl -O http://python-distribute.org/distribute_setup.p... />python distribute_setup.py rm distribute_setup.py easy_install pip==dev pip install Mercurial
上記の例にあるように easy_install や pip コマンドも実行できるようです。
~/.virtualenvs/postmkvirtualenv
#!/bin/sh # This hook is run after a new virtualenv is created and before it is activated. easy_install ~/Python/pywin32-218.win32-py2.7.exe pip install fabric
一旦削除して…
(chippy)[k_horii@horii ~]$ deactivate && rmvirtualenv chippy
Removing chippy...
作りなおしてみます。
$ mkvirtualenv chippy
…中略…
Successfully installed fabric paramiko pycrypto
Cleaning up...
(chippy)[k_horii@horii ~]$ fab --version
Fabric 1.6.0
Paramiko 1.10.1
ちょっと、いや、かなり時間はかかりますが、仮想環境を作成するたびに Fabric がインストールされるようになりました。
ここまでやっといてアレですけど、当初の目的(PHPでWebからfabコマンド実行)を考えても PyWin32 と Fabric は素直に実環境に入れた方がいいような気がしてきました…。
まあローカルでの実行環境をどうするかはおいといて、一応 Windows7 (MinGW/MSYS) でも Fabric が使えるようになりましたので、今まで原始的なコピー&ペーストで行っていた諸作業を、どんどん自動化してみようと思います。