Dulwichを正しくインストールして、WindowsでHG-GITを動作させるにはどうすればよいですか?
質問
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ファイルを使用してコマンドを実行するソースからすべてをインストールすることです。この場合、次のようにする必要があります。
- Mercurialをインストールします ソースから。これにより、Windowsユーザーは通常、CスピードアップをコンパイルするためのVisual Studioまたは代替コンパイラがないため、「純粋な」バージョンが構築されます。
Dulwichをインストール - 最新のトランクを使用します スナップショット gitとdulwichの両方。
python setup.py - プアインストール
最新のHGGITをインストールします スナップショット
python setup.pyインストール
Mercurial.iniを編集して有効にします
hggit =
- 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
.
ハッシュマップは、正しく動作するためにequals
とhashCode
メソッドの両方の適切な実装に依存しています。オブジェクトロジックを反映する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インストールにインストールされています ここ
ステップ
- 既存の水銀インストールをデオインストールします
- 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
成功!