我正在尝试遵循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。
答案 0 :(得分:11)
似乎文档需要更新。尽管当时保留了别名,但command
是moved from cmdutil
to registrar
in January, 2016。这是marked as deprecated in November, 2017和removed 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)