如何获得Mercurial';在Windows上工作的hgwebdir?
以下是我采取的步骤:如何获得Mercurial';在Windows上工作的hgwebdir?,mercurial,tortoisehg,Mercurial,Tortoisehg,以下是我采取的步骤: 安装Apache2.2.x 安装龟甲0.7 将hgwebdir.cgi、hgweb.config复制到cgi-bin 根据需要编辑hgweb.config 解压$blah\TortoiseHg\library.zip以解压$blah\TortoiseHg\library sys.path.append($blah\TortoiseHg\library)位于 hgwebdir.cgi 将$blah\TortoiseHg\templates移动到$blah\TortoiseH
- 安装Apache2.2.x
- 安装龟甲0.7
- 将hgwebdir.cgi、hgweb.config复制到cgi-bin
- 根据需要编辑hgweb.config
- 解压$blah\TortoiseHg\library.zip以解压$blah\TortoiseHg\library
- sys.path.append($blah\TortoiseHg\library)位于 hgwebdir.cgi
- 将$blah\TortoiseHg\templates移动到$blah\TortoiseHg\library\templates
找不到什么DLL?您错过了mercurial的c库 有三种方法可以摆脱这种局面
请注意,我还没有看到这些是如何构建的
(您需要基于distutils的安装,而不是基于py2exe的安装)
第一件事:不要用乌龟来做这个。改用Mercurial安装程序 (TortoiseHg试图尽可能独立于Python安装,但由于这位Python新手不清楚的原因,一切都不起作用。关于py2exe的一些内容。) 否则,只需按照HgWebDirStepByStep中的步骤操作即可。我确实需要安装pywintypes,但是YMMV。最后,该页面上提到的解压实用程序可能会对文件权限执行奇怪的操作:我必须向Templates目录及其文件/子目录添加读取权限 另外,如果您想知道如何设置样式,请将以下内容添加到hgweb.config:
[web]
style = foo
我知道这个问题已经得到了回答,但我遇到了一个稍微不同的问题,并找到了解决办法-- 我确信我在Python配置(2.5.4)中遗漏了一些明显的东西,但是我在.pyd与.dll之间遇到了一些问题。(我对Python subversion库也有同样的问题。)我在Mercurial\library.zip中看到了osutil.pyd,但它无法加载它。因此,我解压缩library.zip,然后将*.pyd复制到*.dll,例如:
REM Ugly DOS... Recursively renames all .pyd files to .dll
for /f "tokens=*" %%a in ('dir /s /b *.pyd') do copy "%%a" "%%~da%%~pa%%~na.dll"
确保解压后的库目录位于PYTHONPATH中,但在此之后,我可以成功地执行:from mercurial import osutil。还要记住将模板目录复制或移动到新解压缩的库目录
其余部分请遵循本手册第5节中的步骤。不过,我没有经历第5.3节中的“Gotchas”。我的设置涉及apache 2.2.17、mod_wsgi 3.3、python 2.7.2、trac 0.12.2和mercurial 1.8.4。出现了两个问题:
;demandimport.disable()
E:\Dist\mercurial-1.8.4>setup.py——纯构建
E:\Dist\mercurial-1.8.4>setup.py——纯安装
编译版本(使用Microsoft Visual Studio 2008)无法加载DLL:
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] mod_wsgi (pid=6092): Exception occurred processing WSGI script 'D:/Home/web/apache/cgi-bin/hgwebdir.wsgi'.
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] Traceback (most recent call last):
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] File "D:/Home/web/apache/cgi-bin/hgwebdir.wsgi", line 9, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] from mercurial.hgweb.hgwebdir_mod import hgwebdir
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\hgweb\\__init__.py", line 10, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] import hgweb_mod, hgwebdir_mod
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\hgweb\\hgweb_mod.py", line 10, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] from mercurial import ui, hg, hook, error, encoding, templater
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\ui.py", line 10, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] import config, util, error
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\config.py", line 9, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] import error, util
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\util.py", line 17, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] import error, osutil, encoding
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] ImportError: DLL load failed: The specified module could not be found.
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]mod_wsgi(pid=6092):处理wsgi脚本“D:/Home/web/apache/cgi-bin/hgwebdir.wsgi”时发生异常。
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]回溯(最近一次呼叫最后一次):
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]文件“D:/Home/web/apache/cgi-bin/hgwebdir.wsgi”,第9行,在
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]来自mercurial.hgweb.hgwebdir\u mod import hgwebdir
[2011年6月16日星期四21:46:28][error][client 192.168.178.24]文件“C:\\Apps\\Python27\\lib\\site packages\\mercurial\\hgweb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
[2011年6月16日星期四21:46:28][error][client 192.168.178.24]导入hgweb_mod,hgwebdir_mod
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]文件“C:\\Apps\\Python27\\lib\\site packages\\mercurial\\hgweb\\hgweb\u mod.py”,第10行
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]来自mercurial导入ui、hg、hook、error、encoding、templater
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]文件“C:\\Apps\\Python27\\lib\\site packages\\mercurial\\ui.py”,第10行,in
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]导入配置,util,错误
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]文件“C:\\Apps\\Python27\\lib\\site packages\\mercurial\\config.py”,第9行
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]导入错误,util
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]文件“C:\\Apps\\Python27\\lib\\site packages\\mercurial\\util.py”,第17行,in
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]导入错误,osutil,编码
[Thu Jun 16 21:46:28 2011][error][client 192.168.178.24]导入错误:DLL加载失败:找不到指定的模块。
对于任何想要在Windows上使用Ortoisehg和Apache的循序渐进教程的人,我在这里写了一篇:这是使用网站上的win32安装程序。我也无法从python REPL内部导入mercurial.osutil(当然,添加了sys.path)。我认为实际问题是osutil.pyc与您的python版本不兼容,类似于“坏幻数”问题。将pure目录中的osutil.py放到mercurial目录中,问题就解决了。您可以使用生成的osutil.pyc t