91 votes

Comment renommer un virtualenv en Python ?

J'ai mal orthographié le nom de la virtualenv tout en l'initialisant en utilisant :

$ virtualenv vnev

J'avais en fait l'intention de créer l'environnement sous le nom de venv . Ayant essayé de renommer le vnev vers le dossier venv Je trouve que cela n'aide pas beaucoup. Le nom de l'environnement d'activation renomme toujours l'ancien fichier vnev .

$ mv vnev venv
$ . venv/bin/activate
(vnev) $ deactivate

Je voudrais savoir comment procéder pour renommer l'environnement ?

0 votes

Avez-vous pu renommer ou recréer votre virtualenv ?

0 votes

@andrew Non. Du moins, pas de la manière dont je voulais le faire. J'ai écrit un script pour installer tous les paquets précédemment installés dans le mauvais environnement vers le nouvel environnement.

0 votes

Cela répond-il à votre question ? Puis-je déplacer un virtualenv ?

168voto

andrew Points 1895

Par défaut, virtualenv ne prend pas en charge le renommage des environnements. Il est plus sûr de supprimer le répertoire virtualenv et d'en créer un nouveau avec le bon nom. Vous pouvez le faire en :

  1. Activez votre virtualenv : source vnev/bin/activate
  2. Créez un fichier requirements.txt des paquets actuellement installés : pip freeze > requirements.txt
  3. Supprimez le virtualenv mal orthographié : rm -r vnev/
  4. Créez un nouveau virtualenv avec le nom correct : virtualenv venv
  5. Activez le nouveau virtualenv : source venv/bin/activate
  6. Installer les paquets à partir de requirements.txt : pip install -r requirements.txt

Si la recréation n'est pas envisageable, il existe des outils tiers tels que virtualenv-mv qui pourrait être utile.

Vous pouvez également utiliser virtualenvwrapper qui fournit le cpvirtualenv pour copier ou renommer les virtualenvs.

0 votes

Est-il nécessaire de désactiver l'ancienne virtualenv avant de la supprimer ? Je ne l'ai pas fait et cela a quand même fonctionné, mais je suis curieux. Merci.

1 votes

@Bill Je crois que c'est une bonne pratique mais pas obligatoire. Voici la désactivation de script pour virtualenv : github.com/pypa/virtualenv/blob/master/virtualenv_embedded/

1 votes

J'ai aimé la note sur cpvirtualenv

48voto

farenorth Points 4661

Si vous utilisez virtualenvwrapper cela peut être fait par :

$ cpvirtualenv <wrong_name> <correct_name>
$ rmvirtualenv <wrong_name>

De plus, pour votre information, pour renommer un environnement virtuel Conda, consultez le document suivant cette question .

0 votes

Il semble y avoir un bug avec cpvirutalenv, notamment dans ~/<votre_env_dir>/<votre_env>/bin/pip et pip3.x code en dur les chemins. Et la copie effectuée via cpvirtualenv ne les met pas à jour. Facile à corriger, mais sans cela, les opérations standard comme pip freeze ou uinstall ne fonctionneront pas.

1voto

Sur windows J'ai pu facilement renommer mon environnement virtuel en éditant activate.bat à l'intérieur de scripts\ :

  1. Sauvegarde de l'original activate.bat (J'ai fait un copier-coller puis j'ai renommé la mienne BACKUP_activate.bat ).

  2. Cliquez avec le bouton droit de la souris et modifiez activate.bat .

  3. Changement VIRTUAL_ENV variable de :

     set VIRTUAL_ENV=C:\some_dir\old_venv_name

    en

     set VIRTUAL_ENV=C:\some_dir\new_venv_name
  4. Changement PROMPT variable de :

     set PROMPT=(old_venv_name) %PROMPT%

    en

     set PROMPT=(new_venv_name) %PROMPT%
  5. Sauvegarder le fichier batch modifié

NOTE : Ma solution devrait fonctionner et permettre de sauvegarder windows users la mise en place de nouveaux environnements virtuels, je n'ai aucune connaissance en matière de script ou de quoi que ce soit dans linux ou d'autres systèmes d'exploitation

1voto

Jim Stewart Points 6811

cpvirtualenv à partir de virtualenv-wrapper a échoué lorsque j'ai essayé d'exécuter virtualenv-clone mais l'exécuter directement a bien fonctionné :

virtualenv-clone ~/.virtualenvs/oldname ~/.virtualenvs/newname
workon newname
rmvirtualenv oldname

Il n'est pas nécessaire de réinstaller quoi que ce soit.

0 votes

Cela a fonctionné pour moi, excellent travail !

0voto

ImNomad Points 21

Ma réponse est similaire à la création d'un nouvel environnement virtuel avec les dépendances de l'ancien, mais celle-ci est succincte.

  1. Clonez l'ancien environnement (disons venv_1) vers un nouvel environnement (disons venv_2) en utilisant conda.

    conda create -n venv_2 --clone venv_1

Cela crée un nouvel environnement venv_2 qui clone le venv_1. Il n'y a donc pas de tâche séparée pour obtenir les paquets/dépendances. Une seule étape suffit.

  1. Supprimez l'ancien environnement virtuel. Cette étape est facultative si vous souhaitez conserver l'ancien environnement].

    rm -rf "chemin entièrement qualifié de l'ancien environnement virtuel".

Ainsi, en 1/2 étapes, la tâche peut être accomplie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X