python - 为什么我无法在函数内更改 env.hosts?

标签 python fabric

我真的需要它以某种方式工作:

from fabric.api import *
from fabric.contrib import *

def test():
  global env
  env.user = 'vagrant'
  env.hosts = ['127.0.0.1', ]
  env.port = 2222
  env.key_filename = "/Users/sscarduzio/.vagrant.d/insecure_private_key"
  run('ls /')

测试用例:

$ fab test
No hosts found. Please specify (single) host string for connection:

我不明白为什么可以在函数外部更改 env.* 的值,并且一旦在函数(或类)结构中构造我的代码就会忽略它。

谢谢!

最佳答案

不要使用import *,也不要使用全局变量。两者都没有必要。

from fabric.api import env, run

def test():
  env.user = 'vagrant'
  env.hosts = ['127.0.0.1', ]
  env.port = 2222
  env.key_filename = "/Users/sscarduzio/.vagrant.d/insecure_private_key"
  run('ls /')

关于python - 为什么我无法在函数内更改 env.hosts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518785/

相关文章:

amazon-web-services - 使用 Fabric 或 Boto 连接到 AWS 实例并运行 Shell 命令的简单方法

python - 如何使用列表 1 中元素的索引来更改列表 2 中的索引?

python - 如何使用 Django 作为别名发送电子邮件

python - 如何在 Windows 7 上获取结构执行 (fab.exe) 的输出?

python - Fabric 中的 YAML 文件

python - fabric 脚本中的 Fdisk 分区

python - 在 Python 中,是否可以使用同一个装饰器来装饰类方法和非类方法?

python - 如何在 python 中使用命令行显示特定 uid 或用户名的进程?

python - Google 应用引擎上的 Django : "Instance names cannot contain the ' :' character."

python - 如何使用 fabric 在任意主机、多个平台、Linux 和 Windows 上创建文件夹/目录?