Windows 7 x64にhg-gitをeasy_installから入れようとして、ハマったことのメモです。
hg-gitについてはこちら。
Hg-Git Mercurial Plugin
コマンドプロンプトから C:\> C:\Python27\Scripts\easy_install.exe hg-git C:\> C:\Python27\Scripts\easy_install.exe -Z hg-git
でインストールできます。(-Zオプションを付けないと、hg_git-0.3.2-py2.7.eggに圧縮されてしまうので、あとでmercurial.iniにパスを指定できなくなる)
error: Setup script exited with error: Unable to find vcvarsall.bat
まずはvcvarsall.batが見つからないと怒られます。これはVisual C++ 2008 Express Edition with SP1をインストールすればOKです。2010は使えないようなので、2008をインストールします。
Visual Studio 2008 Express | Microsoft Visual Studio
ダウンロードリストからC++を選んでダウンロードしてください。
C:\Python27>Scripts\easy_install.exe hg-git Searching for hg-git Best match: hg-git 0.3.2 Processing hg_git-0.3.2-py2.7.egg hg-git 0.3.2 is already the active version in easy-install.pth 中略 File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in query_vcvarsall raise ValueError(str(list(result.keys()))) ValueError: [u'path']
で、次はValueError: [u’path’]のエラーが出たので、調べると、PythonのIssueに上がっている問題のようです。パッチが出ていますが、未だに取り込まれていない様子。
Issue 7511: msvc9compiler.py: ValueError when trying to compile with VC Express – Python tracker
ここから、vcvars4.diff(最新のdiff)をダウンロードします。
パッチを充てたいので、Windowsで動くpatchを探すと、
UnxUtils | Free software downloads at SourceForge.net
ここからダウンロードできるようです。
が、なぜかpatch.exeが管理者権限を要求するので、ちょっと怖いので結局手作業でmsvc9compiler.pyをdiffに従って編集しました。まぁ、大した量ではないので…
—
2012/04/18追記:
コメント欄で原因と対策を教えていただきました。Windowsがpatch.exeというファイル名を勝手にブロックするようです。patchという文字列が入っていて、実行可能形式の拡張子(exeとかscrとか)だと発動するようなので、p.exeなどにファイル名を変更すれば大丈夫です。
ちなみに、install.exeやsetup.exe、update.exeなども同じ原因で権限を要求されます。
MSDNでの公式情報はこちら。
New UAC Technologies for Windows Vista
—
で、再度実行すると、また新しいエラーが出ました。
Reading http://launchpad.net/dulwich Best match: dulwich 0.8.3 Downloading http://samba.org/~jelmer/dulwich/dulwich-0.8.3.tar.gz Processing dulwich-0.8.3.tar.gz Running dulwich-0.8.3\setup.py -q bdist_egg --dist-dir c:\users\***\appdata\local\temp\easy_install-ghb21p\dulwich-0.8.3\egg-dist-tmp-sc0we9 error: Setup script exited with error: Visual Studio Express: need 64-bit tools from the SDK
Windows SDKの64bit版C++ Compilerをインストールしろ、ということなのですが、罠があります。最新のSDKをインストールしても解消しません。
こちらの情報によると、「Windows SDK for Windows Server 2008 and .NET Framework 3.5」か、「Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1」でないとダメのようです。
今回は「Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1」をインストールして成功しました。SDKのインストールの最後に致命的エラーとか表示されましたが、特に問題はなかったようです。
これで再度、easy_install hg_gitを実行すれば、
Installed c:\python27\lib\site-packages\dulwich-0.8.3-py2.7-win-amd64.egg
Finished processing dependencies for hg-git
となって、インストールがやっと成功しました。
最後に%userprofile%\mercurial.iniを開いて、
[extensions]
bookmarks =
hggit = C:\Python27\Lib\site-packages\hg_git-0.3.2-py2.7.egg\hggit
のようにhggitの場所を指定してやればOKです。
私も教えてもらった口ですが、 patch.exe の件は http://www.artonx.org/diary/20080423.html#p01 で。
コメントありがとうございます。
なるほど!こんな仕掛けだったんですね。
hogepatchhoge.777.exe
とかにしてもダメだったので、どうやら/.*patch.*\.exe/のような感じですね。