我正在使用paramiko并在ssh上创建一些virtualenvs,如下所示:
from paramiko import SSHClient, SSHConfig
def ssh_connect(self):
# ssh config file
config = SSHConfig()
config.parse(open(settings.SSH_CONFIG))
o = config.lookup('my_key')
# ssh client
ssh_client = SSHClient()
ssh_client.load_system_host_keys()
ssh_client.connect(o['hostname'], username=o['user'])
return ssh_client
def create_virtualenv(self):
ssh = self.ssh_connect()
venv_path = '/srv/virtualenvs/%s' % self.domain
cmd = 'virtualenv %s' % env_path
stdin = ssh.exec_command(cmd)
self.create_database()
ssh.close()
现在我在这里碰到了一堵墙,因为我还希望将Django安装到这个新创建的带有pip的virtualenv中。我尝试了一个postmkvirtualenv钩子,因为我确实在该服务器上安装了virtualenvwrapper但是当我使用上面的代码创建一个新环境时似乎没有运行。
任何人都可以给我一些关于如何以这种方式安装Django的提示吗?
答案 0 :(得分:1)
您是否尝试使用 workon 命令?这个命令是virtualenvwrapper的一部分,允许你激活一个给定的virtualenv,你应该可以这样做:
def create_virtualenv(self):
ssh = self.ssh_connect()
venv_path = '/srv/virtualenvs/%s' % self.domain
cmd = 'workon %s; pip install Django' % env_path
stdin = ssh.exec_command(cmd)
self.create_database()
ssh.close()