1

私はparamikoを使用しており、次のようにssh上にいくつかのvirtualenvを作成しています。

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を使用して新しく作成されたvirtualenvにもDjangoをインストールしたいためです。そのサーバーにvirtualenvwrapperがインストールされているため、postmkvirtualenvフックを試しましたが、上記のコードを使用して新しい環境を作成すると、それが実行されないようです。

この方法で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 に答える