Fabric 全局设置环境变量
Fabric set environment variable globally
我正在编写一个 fabfile,我想为我用于开发的 virtualenv 包含一个环境变量。我不想把
with shell_env(venv=VIRTUALENV):
...
在每个函数中。我希望能够将其添加到文件的开头并将其应用于全局的所有任务。有办法吗?
比如我有任务
def setup_dev_env():
with shell_env(venv=VIRTUALENV):
local('virtualenv $(venv)')
with prefix('workon $(venv)'):
local('pip install -r requirements.txt')
test()
def test():
with shell_env(venv=VIRTUALENV):
with prefix('workon $(vnenv)'):
local('python3 manage.py test')
如果我不必在两个函数的开头重复完全相同的行,那就太好了。
如果您查看 prefix()
和 shell_env()
- 您会注意到它们只使用 _setenv({..})
您可以将所有内容与 settings()
结合起来并将其放入一个函数中全部一次或全部放在一行中.. 由你决定。
如果看起来像:
def setup_dev_env():
with settings(..all your options..):
local(..your command...)
或者如果你真的想变酷:
@with_settings(..all your same options from before..)
def setup_dev_env():
local(..command..)
我不确定这是否被认为是 command_prefixes
的黑客攻击,但它有效:
env.command_prefixes=["export myvar='Hello world'",]
def echo_env():
run(r"echo $myvar")
输出:
C:\Users\swozn\PycharmProjects\aaetuea>fab echo_env
[swozn@localhost] Executing task 'echo_env'
[swozn@localhost] run: echo $myvar
[swozn@localhost] out: Hello world
优点是不可能忘记,因为它会自动添加到您的所有命令之前。
我正在编写一个 fabfile,我想为我用于开发的 virtualenv 包含一个环境变量。我不想把
with shell_env(venv=VIRTUALENV):
...
在每个函数中。我希望能够将其添加到文件的开头并将其应用于全局的所有任务。有办法吗?
比如我有任务
def setup_dev_env():
with shell_env(venv=VIRTUALENV):
local('virtualenv $(venv)')
with prefix('workon $(venv)'):
local('pip install -r requirements.txt')
test()
def test():
with shell_env(venv=VIRTUALENV):
with prefix('workon $(vnenv)'):
local('python3 manage.py test')
如果我不必在两个函数的开头重复完全相同的行,那就太好了。
如果您查看 prefix()
和 shell_env()
- 您会注意到它们只使用 _setenv({..})
您可以将所有内容与 settings()
结合起来并将其放入一个函数中全部一次或全部放在一行中.. 由你决定。
如果看起来像:
def setup_dev_env():
with settings(..all your options..):
local(..your command...)
或者如果你真的想变酷:
@with_settings(..all your same options from before..)
def setup_dev_env():
local(..command..)
我不确定这是否被认为是 command_prefixes
的黑客攻击,但它有效:
env.command_prefixes=["export myvar='Hello world'",]
def echo_env():
run(r"echo $myvar")
输出:
C:\Users\swozn\PycharmProjects\aaetuea>fab echo_env
[swozn@localhost] Executing task 'echo_env'
[swozn@localhost] run: echo $myvar
[swozn@localhost] out: Hello world
优点是不可能忘记,因为它会自动添加到您的所有命令之前。