Crie uma cópia do virtualenv localmente sem pip install

3

Em algum momento, é necessário criar uma cópia do virtualenv existente para testar recursos extras do nosso projeto.

Nesse caso, precisamos criar uma cópia do ambiente existente e adicionar mais alguns requisitos.

Uma das formas de criar uma cópia do virtualenv existente é mencionada abaixo:

# while using existing virtualenv
(oldenv): pip freeze > requirements.txt

# after creating and logged-in to new virtualenv
(newenv): pip install -r requirements.txt

# where requirements.txt is the same file created using (oldenv)

Mas eu pessoalmente não prefiro assim. Por quê?? Por causa da instalação dos mesmos pacotes que já estão lá e que podemos reutilizar. A reutilização ou a cópia não apenas reduzirá o tempo e o esforço extra, mas também reduzirá o uso da largura de banda da Internet para nenhum, especialmente para usuários limitados e lentos da Internet.

Legal! Então, quais são as outras maneiras de criar uma cópia do virtualenv existente localmente?

Eu conheço duas outras maneiras que estou mencionando abaixo. Espero que isso seja útil.

    
por Saurav Kumar 20.02.2016 / 18:16

2 respostas

8

Primeira maneira de criar uma cópia do virtualenv existente, digamos ProjectAenv :

  1. Copie o ProjectAenv para outro nome ou diretório:

    cp -R /home/sk/Path1/ProjectAenv /home/sk/Path2/ProjectBenv
    

    em que /home/sk/Path1/ProjectAenv é o caminho absoluto do virtualenv ProjectAenv

  2. Em seguida, abra o arquivo activate do ProjectBenv recém-copiado usando seu editor preferido:

    gedit /home/sk/Path2/ProjectBenv/bin/activate
    
  3. Encontre a linha VIRTUAL_ENV="/ home / sk / Path1 / ProjectAenv" e substitua por:

    VIRTUAL_ENV="/home/sk/Path2/ProjectBenv"
    

    Salve e feche o arquivo.

Isso é !! Seu novo ambiente ProjectBenv é copiado de ProjectAenv e pronto para uso. Eu estou usando isso há muito tempo e nunca recebi nenhum problema ainda, embora eu recomende a segunda maneira de copiar.

Segunda maneira de criar uma cópia do virtualenv existente (Recomendado) :

  1. Faça o download de virtualenv-clone :

    wget https://pypi.python.org/packages/source/v/virtualenv-clone/virtualenv-clone-0.2.6.tar.gz
    tar -zxvf virtualenv-clone-0.2.6.tar.gz
    cd virtualenv-clone-0.2.6
    
  2. Instale virtualenv-clone dentro de qualquer ambiente virtualenv:

    virtualenv newenv            # create a new environment. You can use any existing one.
    source newenv/bin/activate   # login to newenv
    (newenv): python setup.py install  # install virtualenv-clone in newenv
    # be sure that you are inside the directory "virtualenv-clone-0.2.6"
    

    virtualenv-clone será instalado dentro do newenv.

  3. Agora, enquanto estiver logado como newenv, podemos criar uma cópia de qualquer ambiente existente. Por exemplo, criando a cópia do ProjectAenv:

    (newenv): virtualenv-clone ProjectAenv ProjectBenv 
    (newenv): deactivate             # to come out from newenv.
    

Por favor, comente quaisquer sugestões ou alterações.

    
por Saurav Kumar 20.02.2016 / 18:16
1

Só quero adicionar ao método manual de @SauravKumar. A correção do caminho no script activate é necessária, mas não é suficiente. Você também precisa corrigir o caminho em outros scripts como pip , pip2 , etc.

A maneira mais fácil de fazer é pesquisar seu caminho dentro da pasta bin do ambiente virtual como:

root@www:/var/www/app/venv/bin# grep "/tmp/app/HadithHouseWebsite/venv" * -R
activate:VIRTUAL_ENV="/tmp/app/HadithHouseWebsite/venv"
activate.csh:setenv VIRTUAL_ENV "/tmp/app/HadithHouseWebsite/venv"
activate.fish:set -gx VIRTUAL_ENV "/tmp/app/HadithHouseWebsite/venv"
django-admin:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
django-admin.py:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
easy_install:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
easy_install-2.7:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pbr:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip2:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip2.7:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
python-config:#!/tmp/app/HadithHouseWebsite/venv/bin/python
sqlformat:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
wheel:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7

Depois, passe por esses arquivos e altere os que você precisa. Principalmente, você precisa alterar os arquivos activate* e pip* .

Espero que isso ajude.

    
por Rafid 20.02.2017 / 19:16