gpt4 book ai didi

python - 以部署用户身份通过​​结构激活 virtualenv

转载 作者:IT老高 更新时间:2023-10-28 12:32:26 26 4
gpt4 key购买 nike

我想在本地运行我的结构脚本,然后登录到我的服务器,切换用户进行部署,激活项目 .virtualenv,这将更改项目的目录并发出 git pull。

def git_pull():
sudo('su deploy')
# here i need to switch to the virtualenv
run('git pull')

我通常使用来自 virtualenvwrapper 的 workon 命令来获取激活文件,而后激活文件会将我放入项目文件夹中。在这种情况下,似乎因为fabric从shell中运行,控制权交给了fabric,所以我不能使用bash的源内置到'$source ~/.virtualenv/myvenv/bin/activate'

任何人有他们如何做到这一点的例子和解释?

最佳答案

作为对 bitprophet 预测的更新:在 Fabric 1.0 中,您可以使用 prefix()以及您自己的上下文管理器。

from __future__ import with_statement
from fabric.api import *
from contextlib import contextmanager as _contextmanager

env.hosts = ['servername']
env.user = 'deploy'
env.keyfile = ['$HOME/.ssh/deploy_rsa']
env.directory = '/path/to/virtualenvs/project'
env.activate = 'source /path/to/virtualenvs/project/bin/activate'

@_contextmanager
def virtualenv():
with cd(env.directory):
with prefix(env.activate):
yield

def deploy():
with virtualenv():
run('pip freeze')

关于python - 以部署用户身份通过​​结构激活 virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1180411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com