简单的Mercurial扩展无法导入

wal*_*pus 9 python mercurial tortoisehg mercurial-extension

我正在尝试按照示例代码编写Mercurial扩展.这是一个最小的样本,从示例代码中逐字复制:

from mercurial import cmdutil
from mercurial.i18n import _

cmdtable = {}
command = cmdutil.command(cmdtable)
Run Code Online (Sandbox Code Playgroud)

我将其保存到文件并在我的.hgrc文件中安装扩展名,如下所示:

[extensions]
myext=C:\foo\myext.py
Run Code Online (Sandbox Code Playgroud)

任何后续发出的命令,例如hg init现在导致以下错误消息:

***无法从C:\ foo\myext.py导入扩展名myext:'module'对象没有属性'command'

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

我在Windows 10上使用Mercurial 4.7,由TortoiseHg安装程序(tortoisehg-4.7.0-x64)安装.Mercurial使用Python 2.7.13,也是由TortoiseHg安装程序安装的.

Chr*_*ris 12

看起来文档需要更新.command从移动cmdutilregistrar在2016年1月,虽然一个别名是当时留在原地.这在2017年11月标记为已弃用,于2018年5月完全删除.

2018年8月发布Mercurial 4.7 包括删除的更改cmdutil.command:

cmdutil:drop不推荐使用registrar.command(API)的前身

这对我有用:

from mercurial import registrar
from mercurial.i18n import _

cmdtable = {}
command = registrar.command(cmdtable)
Run Code Online (Sandbox Code Playgroud)