[英]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。
我通過以下方式手動安裝了德威:
現在,當我運行 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 文件執行命令。 在這種情況下,您需要:
安裝 Dulwich - 我會為 Git 和 Dulwich 使用最新的主干快照。
python setup.py --pure 安裝
安裝最新的 HgGit快照
python setup.py 安裝
編輯 Mercurial.ini 以啟用hggit =
我在http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/找到了一個更簡單的解決方案
然后我自己找到了一個更簡單的解決方案:
在 Windows 上使用 hg-git Mercurial 擴展:
[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
基於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 install dir>
和<python 2.7 install dir>\\Scripts
在PATH
環境變量中 現在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.