Установка Джанго в виртуален с парамико
Я использую paramiko и создаю некоторые virtualenvs над 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 в этот недавно созданный virtualenv с pip. Я попробовал перехват postmkvirtualenv, потому что на этом сервере у меня установлен virtualenvwrapper, но он, похоже, не запускается, когда я создаю новую среду с использованием приведенного выше кода.
Кто-нибудь может дать мне какие-нибудь советы о том, как я могу установить Django таким образом?
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()