1

我正在使用 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()

现在我在这里遇到了一些障碍,因为我还想用 pip 将 Django 安装到这个新创建的 virtualenv 中。我尝试了一个 postmkvirtualenv 钩子,因为我确实在该服务器上安装了 virtualenvwrapper,但是当我使用上面的代码创建新环境时,它似乎没有运行。

谁能给我任何关于如何以这种方式安装 Django 的提示?

4

1 回答 1

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()
于 2012-11-14T22:04:19.540 回答