簡體   English   中英

如何正確安裝 dulwich 以使 hg-git 在 Windows 上工作?

[英]How do I correctly install dulwich to get hg-git working on Windows?

我正在嘗試在 Windows(Windows 7 64 位,具體來說)上使用 hg-git Mercurial 擴展。 我安裝了 Mercurial 和 Git。 我安裝了 Python 2.5(32 位)。

我按照http://hg-git.github.com/上的說明安裝擴展。 最初的 easy_install 失敗,因為它無法在沒有 Visual Studio 2003 的情況下編譯 dulwich。

我通過以下方式手動安裝了德威:

  • git 克隆 git://git.samba.org/jelmer/dulwich.git
  • 德威
  • c:\\Python25\\python setup.py --pure 安裝

現在,當我運行 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 這是應該在某個地方提取的,還是應該按原樣工作?

由於失敗,我嘗試了 hg-git 頁面中的“更復雜”的說明,建議克隆 git://github.com/schacon/hg-git.git 並在我的 Mercurial 配置中引用路徑。 我克隆了 repo,並將我的擴展文件更改為如下所示:

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

現在,當我運行 hg 時,我看到: *** failed to import extension hggit from c:\\code\\hg-git\\hggit: No module named dulwich.errors。

好的,這告訴我它現在正在尋找 hggit,因為我可以在 hg-git\\hggit\\git_handler.py 中看到它調用

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.egg 文件夾。 這是通過上述步驟創建的。 我是否需要采取額外的步驟才能使其成為 Python“路徑”的一部分?

從 Python 命令行(如其中一個答案中所建議):

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 二進制發行版是“凍結的”——它們使用與它們捆綁在一起的 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 - 我會為 Git 和 Dulwich 使用最新的主干快照

    python setup.py --pure 安裝

  3. 安裝最新的 HgGit快照

    python setup.py 安裝

  4. 編輯 Mercurial.ini 以啟用hggit =

  5. 使用您的 \\Python\\Scripts\\hg.bat 啟動 Mercurial

我在http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/找到了一個更簡單的解決方案

然后我自己找到了一個更簡單的解決方案:

在 Windows 上使用 hg-git Mercurial 擴展:

  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 <foo@example.com>
ssh=d:/home/lib/dll/plink.exe -i "d:/home2/ssh-private-key.ppk"

首次連接SSH服務器時,應啟動putty.exe並嘗試使用它進行連接。 它將服務器密鑰指紋添加到注冊表中。 否則 plink 會要求您接受指紋但它不接受任何輸入。

您可以使用 puttygen.exe 生成私鑰。 要么使用沒有密碼短語的密鑰,要么使用 Pageant.exe ssh 身份驗證代理。

如果可以安裝 TortoiseHg,則包括 dulwich 和其他要求。

嘗試以下配置(更改為您的路徑),這對我有用:

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

在我的情況下,當我有hggit =空值時,我得到與你在這種情況下相同的錯誤。 但是我可以在 python shell 中毫無問題地import dulwich ,所以你應該檢查你的easy-install.pth (正如大衛所指出的)是否包含dulwich-0.5.0-py2.5.egg 我也安裝了純版本的dulwich

即使在下載最新的 Tortoisehg 並確保安裝了 hggit 插件以及我的 .ini 和 hgrc 文件具有啟用 hggit 的正確條目后,我也遇到了這個錯誤。

原來我的問題是我的道路上既有 mercurial 又有 tortoisehg。 因此,當我運行任何 hg 命令時,它使用的是 mercurial 文件夾中的 hg.exe,而不是 torsoisehg 目錄中的 hg.exe。

這是有道理的,但我的 mercurial 安裝沒有插件。 我的解決方法是從我的路徑中刪除 mercurial,以便 hg 命令通過 tortoisehg 目錄,因為它已經完全捆綁了 hg。 但是請注意,推薦的選項可能是將 mercurual 升級到具有所需插件的版本,但這對我有用。 我嘗試將 mercurial 中的 library.zip 替換為 tortoisehg 中的 library.zip 並且這有效,但它導致了人們想象的其他錯誤。

@techtonik 的回答讓我走上了這條路,對此我深表感謝。

回顧:通過檢查您的路徑來驗證哪個 hg exe 正在運行您的 hg 命令,因為無論出於何種原因,該 hg.exe 都找不到插件。

今天在安裝最新的 TortoiseHg 時遇到了這個問題。

在您的系統上獲取最新的 python 2.7(我使用 2.7.16)設置,您可能已經有了。 獲取命令窗口並轉到 c:\\Python27 文件夾要運行 pip 使用 Scripts\\pip 或 easy_install 使用 Scripts\\easy_install 嘗試 pip -V 以確保您獲得 2.7 版本而不是某些 3.X 版本

錯誤的:

c:\Python27>pip -V
pip 20.2.4 from c:\python38\lib\site-packages\pip (python 3.8)

對:

c:\Python27>Scripts\pip -V
pip 20.2.4 from c:\python27\lib\site-packages\pip (python 2.7)

如果已經安裝了 dulwich 或 hg-git

Scripts\pip uninstall dulwich
Scripts\pip uninstall hg-git

安裝 hg-git

Scripts\easy_install install hg-git

你現在應該有兩個文件夾

C:\Python27\Lib\site-packages\dulwich-0.19.16-py2.7-win-amd64.egg\dulwich
C:\Python27\Lib\site-packages\hg_git-0.9.0-py2.7.egg\hggit

僅當 Dulwich 版本為 0.19.16(小於 0.20.x)時才有效

將這些文件夾(dulwich 和 hggit)復制到壓縮文件 C:\\Program Files\\TortoiseHg\\lib\\library.zip

zip 文件中的文件夾

基於techtonik的解釋為的進口失敗的原因dulwich.errors ,我發現這似乎比已經提出的那些簡單的我一個解決方案:

Mercurial 下載頁面上,提供了

Mercurial <xyz> for Python 2.7 on Windows x86 (source install)

Mercurial <xyz> for Python 2.7 on Windows x64 (source install)

作為將 Mercurial 作為 Python 模塊安裝到現有 Python 2.7(x86 或 x64)安裝中的 .EXE 文件。

如果 hg-git 和 dulwich 也已安裝到此 Python 安裝中,則導入錯誤應該會消失。

如果您現在不確定該怎么做,我希望這個分步說明會有所幫助:

先決條件

  • 安裝了 Python 2.7
  • <python 2.7 install dir><python 2.7 install dir>\\ScriptsPATH環境變量中
  • hg-git(和 dulwich)已通過此處的說明安裝到此 Python 安裝中

腳步

  1. 卸載任何現有的 Mercurial 安裝
  2. 下載並安裝上面引用的 EXE 文件之一,具體取決於您的 Python 2.7 安裝是 32 位還是 64 位(如果您收到“在注冊表中找不到 Python 2.7”錯誤,您可能需要另一個。)

現在hg clone <some git repo>應該在控制台上工作。

在您讓import dulwich hggit工作之前, hggit將無法工作。 檢查dulwich egg 文件是否位於site-packages下的easy-install.pth文件中。

為了進一步調試,您可以嘗試詢問pkg_resources

import pkg_resources
pkg_resources.require("dulwich")

我在使用 dulwich.errors 時也遇到了這個問題。 而不是從頭開始安裝所有東西。 我只是將 dulwich 從我的默認站點包復制到 mercurial 站點包。 沒有問題。

sudo apt-get install python-dev # 依賴你!

須藤easy_install 德威

成功!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM