web-dev-qa-db-ja.com

Windowsでhg-gitを動作させるためにdulwichを正しくインストールするにはどうすればよいですか?

Windows(具体的にはWindows 7 64ビット)でhg-gitMercurial拡張機能を使用しようとしています。 MercurialとGitをインストールしています。 Python 2.5(32ビット)がインストールされています。

http://hg-git.github.com/ の指示に従って拡張機能をインストールしました。 Visual Studio 2003なしではdulwichをコンパイルできなかったため、最初のeasy_installは失敗しました。

私はdulwichを手動でインストールしました:

  • git clone git://git.samba.org/jelmer/dulwich.git
  • cdダリジ
  • c:\ Python25\python setup.py --pure install

これで、easy_install hg-gitを実行すると、成功します(dulwichの依存関係が満たされているため)。

私のC:\ Users\username\Mercurial.iniには、次のものがあります。

_[extensions]
hgext.bookmarks =
hggit =
_

コマンドプロンプトで「hg」と入力すると、「***拡張機能hggitのインポートに失敗しました:hggitという名前のモジュールがありません」と表示されます。

私のc:\ Python25フォルダーの下を見ると、hggitへの唯一の参照は_Lib\site-packages\hg_git-0.2.1-py2.5.Egg_です。これはどこかで抽出されることになっていますか、それともそのまま動作する必要がありますか?

それが失敗したので、私はgit://github.com/schacon/hg-git.gitのクローンを作成し、Mercurial構成でパスを参照することを提案するhg-gitページからの「より複雑な」指示を試みました。リポジトリのクローンを作成し、拡張ファイルを次のように変更しました。

_[extensions]
hgext.bookmarks =
hggit = c:\code\hg-git\hggit
_

Hgを実行すると、次のように表示されます。***拡張機能hggitをc:\ code\hg-git\hggitからインポートできませんでした:dulwich.errorsという名前のモジュールがありません。

わかりました。hg-git\ hggit\git_handler.pyで呼び出すことができるので、hggitが検出されていることがわかります。

_from dulwich.errors import HangupException
_

それは私にdulwichが正しくインストールされていないか、パスにないように思わせます。

更新:

From Pythonコマンドライン:

_import dulwich
_

_Import Error: No module named dulwich_を生成します

ただし、C:\ Python25\Lib\site-packagesの下に、データが入力されているように見えるdulwich-0.5.0-py2.5.Eggフォルダーがあります。これは、上記の手順で作成されました。 Python "path"の一部にするために必要な追加の手順はありますか?

From Pythonコマンドライン(回答の1つで提案されているように):

_import pkg_resources
pkg_resources.require('dulwich')
_

[dulwich 0.5.0 (c:\python25\lib\site-packages\dulwich-0.5.0-py2.5.Egg)]を生成します

それで、それは私に何を伝えますか? dulwichのインポートは失敗しますが、どうやらpkg_resourcesはそれを見つけることができます。その情報で何ができますか?

52
Joshua Flanagan

それは私にdulwichが正しくインストールされていないか、パスにないように思わせます。

あなたは絶対に正しいです。 Windows用のMercurialバイナリディストリビューションは「凍結」されています-それらはPythonコードとインタープリターがバンドルされているため、システムPYTHONPATHにインストールされているパッケージとは無関係です。Mercurial.iniでhggit拡張機能へのパスを指定する場合、hgはダイレクトパスを使用してインポートしようとしますが、dulwichライブラリはhgによって明示的にインポートされず、そのライブラリにバンドルされていないため、インポートは失敗します。

DulwichとHgGitの両方をhg.exeと一緒にインストールされるlibrary.Zipに追加することは可能ですが、私にとって最善の方法は、Mercurialを含むソースからすべてをインストールし、\ Python\Scriptsにインストールされた.batファイルを使用してコマンドを実行することです。この場合、次のことを行う必要があります。

  1. Mercurialをインストール ソースから。 Windowsユーザーは通常、CスピードアップをコンパイルするためのVisual Studioまたは代替コンパイラを持っていないため、これは「純粋な」バージョンを構築します。
  2. Dulwichをインストールします-最新のトランクを使用します snapshot GitとDulwichの両方に。

    python setup.py --pure install

  3. 最新のHgGitをインストールする スナップショット

    python setup.py install

  4. Mercurial.iniを編集してhggit =を有効にします

  5. \ Python\Scripts\hg.batを使用してMercurialを起動します
16

http://candidcode.com/2010/01/12/a-guide-to-converting-from-Mercurial-hg-to-git-on-a-windows-client/でより簡単な解決策を見つけました

そして、私はさらに簡単な解決策を自分で見つけました:

Windowsでhg-gitMercurial拡張機能を使用するには:

  1. 公式のMercurialバイナリをインストールする
  2. dulwichソースのdulwichフォルダーとhg-gitソースのhggitフォルダーをMercurialインストールフォルダーのlibrary.Zipのルートに配置します。
  3. 以下を%USERPROFILE%\ Mercurial.iniに追加します。

[extensions]
hgext.bookmarks=
hggit=

SSHをサポートするには、PuTTYファミリーのplink.exeが必要です。その後、Mercurial.iniに以下を追加する必要があります。

[ui]
username = John Doe <[email protected]>
ssh=d:/home/lib/dll/plink.exe -i "d:/home2/ssh-private-key.ppk"

SSHサーバーに初めて接続するときは、PuTTY.exeを起動し、それを使用して接続してみてください。サーバーキーのフィンガープリントをレジストリに追加します。それ以外の場合、plinkは指紋を受け入れるように要求しますが、入力を受け入れません。

Puttygen.exeを使用して秘密鍵を生成できます。パスフレーズなしでキーを使用するか、Pageant.exessh認証エージェントを使用してください。

11
nponeccop

TortoiseHgをインストールできる場合は、dulwichやその他の要件が含まれています。

8
kuy

次の構成(パスを変更)を試してください。これは私にとってはうまくいきます。

[extensions]
; hg-git extention
hgext.bookmarks =
hggit = C:\Python26\Lib\site-packages\hg_git-0.2.1-py2.6.Egg\hggit

私の場合、hggit =の値が空の場合、この場合と同じエラーが発生します。しかし、私はpythonシェルで問題なくimport dulwichできるので、easy-install.pthが含まれているかどうか(Davidが指摘したように)dulwich-0.5.0-py2.5.Eggをチェックする必要があります。 dulwichの純粋なバージョンもインストールしました。

4
van

私もdulwich.errorsでこの問題に遭遇しました。すべてを最初からインストールする代わりに。デフォルトのsite-packagesからMercurialsite-packagesにdulwichをコピーしました。問題なく動作しました。

0
Marco

dulwich.errorsのインポートに失敗した理由のtechtonikの 説明 に基づいて、すでに提案されているものよりも簡単に見える解決策を見つけました。

Mercurialダウンロードページ 提供されています

Mercurial <x.y.z> for Python 2.7 on Windows x86(ソースインストール)

そして

Mercurial <x.y.z> for Python 2.7 on Windows x64(ソースインストール)

MercurialをPythonモジュールとして既存のPython 2.7(x86またはx64)インストールにインストールする.EXEファイルとして。

Hg-gitとdulwichがこのPythonインストールにもインストールされている場合、インポートエラーは消えるはずです。

今何をすべきかわからない場合は、このステップバイステップの説明がお役に立てば幸いです。

前提条件

  • Python2.7がインストールされています
  • <python 2.7 install dir><python 2.7 install dir>\ScriptsPATH環境変数にあります
  • hg-git(およびdulwich)がこのPythonインストールに ここ からの指示でインストールされました

ステップ

  1. 既存のMercurialインストールをすべて削除します
  2. Python 2.7のインストールが32ビットか64ビットかによって、上記のEXEファイルのいずれかをダウンロードしてインストールします(「Python2.7がレジストリに見つかりません」エラーが発生した場合は、おそらくもう1つ必要です。)

これで、hg clone <some git repo>がコンソールで機能するはずです。

0
Daniel K

import dulwichが機能するようになるまで、hggitは機能しません。 dulwichEggファイルがeasy-install.pthの下のsite-packagesファイルにあることを確認します。

さらにデバッグするには、pkg_resourcesに質問してみてください。

import pkg_resources
pkg_resources.require("dulwich")
0
David Fraser

最新のTortoisehgをダウンロードし、hggitプラグインがインストールされていることと、.iniおよびhgrcファイルにhggitを有効にするための正しいエントリがあることを確認した後でも、このエラーが発生しました。

私の問題は、Mercurialとtortoisehgの両方が私の道にあったことでした。そのため、hgコマンドを実行すると、torsoisehgディレクトリのhg.exeではなく、Mercurialフォルダーのhg.exeが使用されていました。

これは理にかなっていますが、私のMercurialインストールにはプラグインがありませんでした。私の修正は、パスからMercurialを削除して、hgが完全にバンドルされているためhgコマンドがtortoisehgディレクトリを通過するようにすることでした。ただし、推奨されるオプションは、mercurualを必要なプラグインを備えたバージョンにアップグレードすることですが、これが私にとってはうまくいきました。 Mercurialのlibrary.Zipをtortoisehgのものに置き換えてみましたが、これは機能しましたが、想像どおりに他のエラーが発生しました。

@techtonikの答えは、私をこの道へと導いてくれたことに感謝しています。

要約:hg.exeは何らかの理由でプラグインを検出しないため、パスを確認して、どのhgexeがhgコマンドを実行しているかを確認します。

0
delloPiro