Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得Mercurial';在Windows上工作的hgwebdir?_Mercurial_Tortoisehg - Fatal编程技术网

如何获得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加载失败:找不到指定的模块”。回访的最后一行是“c:\program files\apache group\apache\cgi bin\mercurial\osutil.pyc in.\uu load()”

我读过关于人们在pywintypes25.dll方面有问题的报道;这存在于“c:\program files\tortoisehg”中,并且已经在我的路径中


找不到什么DLL?

您错过了mercurial的c库

有三种方法可以摆脱这种局面

  • 最近的mercurial版本附带纯python实现,您可以在mercurial/pure中找到
  • 自己编译(我不完全确定步骤,在任何unix上都可以)

  • 请注意,我还没有看到这些是如何构建的
    (您需要基于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。出现了两个问题:

  • mercurial demandimport初始化命令
  • mercurial无法在站点包中加载DLL
  • 我按如下方式解决了这个问题:

  • 将hgwebdir.wsgi更改为禁用demandimport:
  • 来自mercurial import demandimport的
    ;demandimport.disable()

  • 创建纯(.py only,no compiled.pyd)mercurial包并安装。另见
  • 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