‘git’ タグのついている投稿

Windows 7 x64にMercurialからgitを操作できるhg-gitをインストールする

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などにファイル名を変更すれば大丈夫です。

パッチを当てられないWindows VISTA

ちなみに、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をインストールしても解消しません。

MathWorks 日本 – How can I set up Microsoft Visual Studio 2008 Express Edition for use with MATLAB 7.7 (R2008b) on 64-bit Windows? – MATLAB & Simulink

こちらの情報によると、「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です。