【问题标题】:Installing Django in a virtualenv with paramiko使用 paramiko 在 vi​​rtualenv 中安装 Django
【发布时间】:2012-08-27 20:48:08
【问题描述】:

我正在使用 paramiko 并通过 ssh 创建一些虚拟环境,如下所示:

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 的提示?

【问题讨论】:

  • 是为了部署自动化吗?您是否考虑过像ansible 这样的工具?如果您不想重新发明轮子,PuppetChef 也是受欢迎的选择。
  • 不是为了自动部署,我们有一个内部系统供我们的员工使用,这只是为了启动一个新环境,因为无法访问该服务器,我只想简单地为他们创建环境像上面一样通过 ssh。
  • @JeffC 这正是 Ansible 所做的......

标签: django rabbitmq celery pip


【解决方案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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2012-01-16
    • 2015-10-08
    • 2012-10-08
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多