Eu tenho um virtualenv existente com muitos pacotes, mas uma versão antiga do Django.
O que eu quero fazer é duplicar esse ambiente, então eu tenho outro ambiente com exatamente os mesmos pacotes, mas uma versão mais recente do Django. Como posso fazer isso?
python
django
virtualenv
dolma33
fonte
fonte
virtualenv -p /path/to/older/venv/bin/python new_venv
e, em seguida, usar orequirements.txt
que você gerada depoispip freeze
Respostas:
A maneira mais fácil é usar o pip para gerar um arquivo de requisitos. Um arquivo de requisitos é basicamente um arquivo que contém uma lista de todos os pacotes python que você deseja instalar (ou já instalou no caso de arquivo gerado pelo pip) e em quais versões eles estão.
Para gerar um arquivo de requisitos, entre no virtualenv original e execute:
Isso irá gerar o arquivo requirements.txt para você. Se você abrir esse arquivo no seu editor de texto favorito, verá algo como:
Agora, edite a linha que diz
Django==x.x
para dizerDjango==1.3
(ou qualquer versão que você deseja instalar em seu novo virtualenv).Por fim, ative seu novo virtualenv e execute:
E o pip fará o download e instalará automaticamente todos os módulos python listados no seu arquivo requirements.txt , nas versões que você especificou!
fonte
Could not find a version that satisfies the requirement a_package=#.#.#
Posso resolvê-lo facilmente? Eu removi uma linha ou mudei a igualdade para a desigualdade.pyenv
também. Resposta incrível.Outra opção é usar o
virtualenv-clone
pacote:fonte
virtualenv-clone
após ativar o virtualenvvirtualenvwrapper
fornece um comando para duplicar virtualenvfonte
Se você estiver usando o Anaconda, basta executar:
Isso será copiado
myenv
para o ambiente recém-criado chamadomyclone
.fonte
A opção mais fácil é usar o
virtualenv-clone
pacote.Para duplicar
venv1
paravenv2
, siga estas etapas:Instale
virtualenv-clone
em umvenv1
ou em um ambiente virtual simuladovenv_dummy
. Para criarvenv_dummy
:Para instalar
virtualenv-clone
:Para duplicar
venv1
paravenv2
:fonte
bin/activate
se seguir esta resposta. Por que você tem que editarbin/activate
?bin/activate
Você não pode simplesmente:
fonte