Dulwichを正しくインストールして、WindowsでHG-GITを動作させるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2360944

質問

WindowsでHG-Git Mercurial Extensionを使用しようとしています(具体的にはWindows 7 64ビット)。私は水銀と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 Dulwich
  • c: python25 python setup.py - プアインストール

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

私のc: users username mercurial.iniで、私は次のとおりです。

[extensions]
hgext.bookmarks =
hggit =

コマンドプロンプトで「HG」を入力すると、「***は拡張機能をインポートできませんでした:HGGITという名前のモジュールなし」

私のc: python25フォルダーの下を見ると、私が見るhggitへの唯一の参照は Lib\site-packages\hg_git-0.2.1-py2.5.egg. 。これはどこかで抽出されるはずですか、それともそのまま機能する必要がありますか?

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

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

HGを実行すると、*** c: code hg-git hggit:dulwich.errorsという名前のモジュールなしから拡張hggitをインポートできませんでした。

わかりました、それは私がHg-git hggit git_handler.pyでそれが呼ぶことを見ることができるので、それが今Hggitを見つけていることを教えてくれます

from dulwich.errors import HangupException

Dulwichが正しくインストールされていないか、パスにないと思わせます。

アップデート:

Pythonコマンドラインから:

import dulwich

降伏 Import Error: No module named dulwich

ただし、C: python25 lib site-packagesの下では、dulwich-0.5.0-py2.5.55.eggフォルダーが入力されているように見える。これは、上記の手順によって作成されました。 Pythonの「パス」の一部にするために必要な追加のステップはありますか?

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が見つけることができます。その情報で何ができますか?

役に立ちましたか?

解決

Dulwichが正しくインストールされていないか、パスにないと思わせます。

あなたは絶対に正しいです。 Windows用のMercurial Binary Distributionsは「フローズン」です。Pythonコードを使用しており、インタープリターがそれらにバンドルされているため、System PythonPathに設置されたパッケージとは無関係です。 Mercurial.iniでHGGIT拡張機能へのパスを指定すると、HGはDirect Pathを使用してインポートしようとしますが、Dulwich LibraryはHGによって明示的にインポートされず、ライブラリにバンドルされていないため、インポートは失敗します。

dulwichとhggitの両方をhg.exeと一緒にインストールしているzipに追加することができますが、私にとって最良の方法は、 python scriptsにインストールされた.batファイルを使用して、mercurialやbatファイルを使用してコマンドを実行するソースからすべてをインストールすることです。この場合、次のようにする必要があります。

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

    python setup.py - プアインストール

  3. 最新のHGGITをインストールします スナップショット

    python setup.pyインストール

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

  5. python scripts hg.batを使用してMercurialを起動します

他のヒント

ノードクラスにequalsメソッドを上書きして実装する必要があります。java.lang.Objectからのデフォルトの実装は、参照の平等を比較します。これはあなたの場合には適していません。

Node new1 = new Node(100, 100);
Node new2 = new Node(100, 100);

System.out.println(new1.equals(new2)); // Your current code will print false
.

ハッシュマップは、正しく動作するためにequalshashCodeメソッドの両方の適切な実装に依存しています。オブジェクトロジックを反映するequalsメソッドを実装する必要があります。のようなもの

public boolean equals(Object o) {
    if(this == o) return true;

    final Node other = (Node) o;
    return ((getX() == o.getX()) && (getY() == o.getY());
}
.

hashCode()オブジェクトにNodeメソッドを実装することもできます。

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

私に合わせて機能する構成(あなたのパスへの変更)をフォローしてみてください:

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

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

あなたが得るまで import dulwich 働くために、 hggit うまくいきません。それを確認します dulwich 卵のファイルはあなたの中にあります easy-install.pth 下のファイル site-packages.

さらにデバッグするには、尋ねてみてください pkg_resources それについて:

import pkg_resources
pkg_resources.require("dulwich")

あなたがすでにあなたがすでに修正したのかどうかは、あなたの例のリンクとして毎回さまざまなページにかかるように?

とにかく、この作品から jQuery Mobileのドキュメントあなたの問題に関連しているかもしれません:

jQuery Mobileは、内部/埋め込みページに渡すクエリパラメータをサポートしませんが、この機能をサポートするためにプロジェクトに追加できるプラグインがあります。軽量のページparams plugin とより完全にfeauret jQuery Mobile Router Plugin backbone.jsまたはspine.jsで使用します。

最新のTortoisehgをダウンロードして、HGGITプラグインがインストールされていることを確認した後でも、このエラーが発生しました。

私の問題は、私の道に水銀と亀の両方があったことです。したがって、HGコマンドを実行したとき、TorsoisehgディレクトリのHg.exeとは対照的に、MercurialフォルダーのHg.exeを使用していました。

これは理にかなっていますが、私の水銀の設置にはプラグインがありませんでした。私の修正は、HGが完全にバンドルされているため、HgコマンドがTortoisehgディレクトリを通過するため、私のパスからMercurialを削除することでした。ただし、推奨されるオプションは、必要なプラグインを持っているバージョンに商人をアップグレードすることですが、これが私にとってうまくいったものです。私はcortoisehgのライブラリ.zipをmercurialのzipに置き換えようとしましたが、これは機能しましたが、想像するように他のエラーにつながりました。

@Techtonikの答えは、私が感謝しているこの道を私に導きました。

要約:Hg.exeが何らかの理由でプラグインを見つけられないため、パスをチェックしてHg ExeがHGコマンドを実行しているかを確認します。

Techtonikのものに基づいています 説明 輸入の故障の理由 dulwich.errors, 、私はすでに提案されているものよりも簡単に見えるソリューションを見つけました。

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

水銀 <x.y.z> WindowsX86のPython 2.7の場合(ソースインストール)

水銀 <x.y.z> Windows X64のPython 2.7の場合(ソースインストール)

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

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

あなたが今何をすべきかわからないなら、私はこの段階的な説明が役立つことを願っています:

前提条件

  • Python 2.7がインストールされています
  • <python 2.7 install dir><python 2.7 install dir>\Scripts にあります PATH 環境変数
  • HG-GIT(およびDulwich)は、からの指示を介してこのPythonインストールにインストールされています ここ

ステップ

  1. 既存の水銀インストールをデオインストールします
  2. Python 2.7のインストールが32ビットまたは64ビットのかどうかに応じて、上記のExeファイルの1つをダウンロードしてインストールします(「Python 2.7がレジストリで見つからない」エラーを取得した場合、おそらくもう1つが必要です。)

hg clone <some git repo> コンソールで作業する必要があります。

sudo apt-get install python-dev#dam you依存関係!

sudo easy_install dulwich

成功!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top