首页 > 解决方案 > 为什么 Python Fabric 用连字符代替下划线?

问题描述

我正在尝试运行这个简单的Fabric示例,但遇到了意外错误。

# fabfile.py
from fabric import task

@task
def upload_and_unpack(c):
    if c.run('test -f /home/jones/test.yml', warn=True).failed:
        c.put('test.yml', '/home/jones')

$ fab -H 'web.example.com' upload_and_unpack
No idea what 'upload_and_unpack' is!

$ fab --list
Available tasks:

  upload-and-unpack

可以看出,Fabric 似乎已将我方法中的下划线替换为连字符。这是我的版本:

$ fab --version
Fabric 2.4.0
Paramiko 2.4.2
Invoke 1.2.0

Fabric 为什么要这样做,我该如何纠正这个错误?我在这里看到关于任务名称从下划线转换为连字符的注释,但是如果 Fabric 将它们转换为连字符,为什么要显示和示例定义带有下划线的方法?编写和执行这样的方法的正确方法是什么?

标签: pythonpython-3.xfabric

解决方案


我遇到过同样的问题。

在我的情况下,它恰好是click7.0 在我恢复click到 6.0 之后,下划线不再被替换。


推荐阅读