简单的Mercurial扩展名无法导入

时间:2018-08-31 14:10:15

标签: python mercurial tortoisehg mercurial-extension

我正在尝试遵循writing Mercurial extensions的示例代码。这是一个最小的示例,是从示例代码中逐字复制的:

keepAlive

我将其保存到文件中,然后将扩展名安装在from mercurial import cmdutil from mercurial.i18n import _ cmdtable = {} command = cmdutil.command(cmdtable) 文件中,如下所示:

.hgrc

随后发出的任何命令,例如[extensions] myext=C:\foo\myext.py 现在导致以下错误消息:

  

***无法从C:\ foo \ myext.py导入扩展名myext:“模块”对象没有属性“命令”

这可能是由错误的环境引起的,例如缺少环境变量?

我正在Windows 10上使用Mercurial 4.7,由TortoiseHg安装程序(tortoisehg-4.7.0-x64)安装。 Mercurial使用同样由TortoiseHg安装程序安装的Python 2.7.13。

1 个答案:

答案 0 :(得分:11)

似乎文档需要更新。尽管当时保留了别名,但commandmoved from cmdutil to registrar in January, 2016。这是marked as deprecated in November, 2017removed entirely in May, 2018

Mercurial 4.7 release in August, 2018 included the change that removed cmdutil.command

  

cmdutil:弃用不推荐使用的registrar.command(API)

这对我有用:

from mercurial import registrar
from mercurial.i18n import _

cmdtable = {}
command = registrar.command(cmdtable)