web-dev-qa-db-fra.com

Créer une copie de virtualenv localement sans installation de pip

Il est parfois nécessaire de créer une copie de la commande virtualenv pour tester des fonctionnalités supplémentaires de notre projet.

Dans un tel cas, nous devons créer une copie de l'environnement existant et ajouter quelques exigences supplémentaires.

L'un des moyens de créer une copie de virtualenv existant est mentionné ci-dessous:

# 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)

Mais personnellement, je ne préfère pas cette façon. Pourquoi?? En raison de l’installation des mêmes paquets déjà présents que nous pouvons réutiliser. Réutiliser ou dire que la copie réduira non seulement le temps et les efforts supplémentaires nécessaires, mais réduira également l’utilisation de la bande passante Internet, spécialement pour les utilisateurs limités et lents d'Internet.

Cool! Ensuite, quels sont les autres moyens de créer localement une copie de virtualenv existant?

Je connais deux autres moyens que je mentionne ci-dessous. J'espère que cela vous sera utile.

5
Saurav Kumar

Première façon de créer une copie de virtualenv existant, dites ProjectAenv:

  1. Copiez le ProjectAenv dans un autre nom ou répertoire:

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

    /home/sk/Path1/ProjectAenv est le chemin absolu de virtualenv ProjectAenv

  2. Ensuite, ouvrez le fichier activate de la nouvelle copie ProjectBenv en utilisant votre éditeur préféré:

    gedit /home/sk/Path2/ProjectBenv/bin/activate
    
  3. Recherchez la ligne VIRTUAL_ENV = "/ home/sk/Path1/ProjectAenv" et remplacez-la par:

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

    Enregistrez et fermez le fichier.

C'est tout!! Votre nouvel environnement ProjectBenv est copié à partir de ProjectAenv et prêt à être utilisé. J'utilise cette méthode depuis longtemps et je n'ai encore aucun problème, bien que je recommande la deuxième méthode de copie.

Deuxième façon de créer une copie de virtualenv existant (Recommandé):

  1. Télécharger 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. Installez virtualenv-clone dans n'importe quel environnement 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 sera installé dans newenv.

  3. Maintenant, connecté à newenv, nous pouvons créer une copie de tout environnement existant. Par exemple, créer la copie de ProjectAenv:

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

Veuillez commenter pour toutes suggestions ou modifications.

9
Saurav Kumar

Je veux juste ajouter à la méthode manuelle de @SauravKumar. La correction du chemin dans le script activate est nécessaire, mais pas suffisante. Vous devez également corriger le chemin dans d'autres scripts tels que pip, pip2, etc.

La chose la plus simple à faire est de rechercher votre chemin dans le dossier bin de l’environnement virtuel, comme:

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

Ensuite, parcourez ces fichiers et modifiez ceux dont vous avez besoin. Généralement, vous devez modifier les fichiers activate* et les fichiers pip*.

J'espère que cela t'aides.

2
Rafid