这工作得很好
@task
def foo(context):
with context.cd('/'):
context.run('pwd')
Run Code Online (Sandbox Code Playgroud)
输出:
/
Run Code Online (Sandbox Code Playgroud)
但这不会:
@task
def bar(context):
with context.cd('/'):
context.sudo('pwd', password='mysecretpassword')
Run Code Online (Sandbox Code Playgroud)
输出:
[sudo] password: sudo: cd: Befehl nicht gefunden
Run Code Online (Sandbox Code Playgroud)
如何让第二个示例运行?
事实证明,这是调用中的一个尚未修复的错误。
https://github.com/pyinvoke/invoke/issues/459
编辑:
这是我现在的解决方法:
context.sudo('bash -c cd "/ && pwd"')