Puis-je déplacer un virtualenv?
Cette question n'est pas un doublon.
Il se rapporte pas seulement à renommer un environnement virtuel, mais déplacement dans un autre répertoire, y compris, éventuellement, un autre répertoire de l'utilisateur.
Ce n'est pas la même chose que simplement de renommer un environnement virtuel, surtout pour les gens qui ne connaissent pas virtualenvs.
Si je crée un virtualenv, et je le déplacer vers un autre dossier, sera-il encore?
$ virtualenv -p /usr/bin/python3 /home/me/Env/my-python-venv
$ source Env/my-python-venv/bin/activate
(my-python-venv) $
...plus tard dans la journée, l'environnement virtuel DÉPLACÉ...
(my-python-venv) $ deactivate
$ mkdir -p /home/me/PeskyPartyPEnvs
$ mv /home/me/Env/my-python-venv /home/me/PeskyPartyPEnvs/
Question:
Ce travail?
$ source /home/me/PeskyPartyPEnvs/my-python-venv/bin/activate
(my-python-venv) $ /home/me/PeskyPartyPEnvs/my-python-venv/bin/pip3 install foaas
Je veux dire, ce que de moins en moins une question à propos de la sagesse d'essayer ceci (à moins que la sagesse est de l'humour, bien sûr), et plus de savoir si c'est possible. J'ai vraiment envie de savoir si c'est possible de le faire en Python 3, ou si j'ai juste à suck it up et de le cloner.
Je peux juste mv
un virtualenv
comme ça sans tristesse? Je veux éviter la tristesse.
Vous devez vous connecter pour publier un commentaire.
Oui. Il est possible de la déplacer sur la même plate-forme. Vous pouvez utiliser
--relocatable
sur l'environnement existant.De
--help
:CEPENDANT, cela ne semble PAS changer la
activate
script, et plutôt ne change lapip*
eteasy_install*
scripts. Dans leactivate
script, le$VIRTUAL_ENV
variable d'environnement codé en dur que l'original/path/to/original/venv
. Le$VIRTUAL_ENV
variable est utilisée pour définir laPATH
de votre active de l'environnement, de sorte qu'il doit être changé en fonction du nouvel emplacement afin d'appelerpython
etpip
etc. sans chemin d'accès absolu.Pour résoudre ce problème, vous pouvez modifier la
$VIRTUAL_ENV
variable d'environnement dans leactivate
script (par exemple à l'aide desed
), et tout devrait être bon d'aller.Un exemple d'utilisation:
Hourra, vous pouvez maintenant installer les choses et de les charger dans votre nouvellement situé à l'environnement virtuel.
Scripts
dir (équivalent àbin
sur *nix) et dit quelque chose commeactivate.ps1 cannot be made relative (it's not a normal script that starts with #!c:\..python.exe.
en gros, c'est de se plaindre que le hachage-bang dans le fichier d'en-tête n'est pas au courant du virtualenv python.exe, c'est celui que j'ai déménagé de -facile fixe. J'ai regardé que posh script, et il a déjà découvre son propre chemin, de toute façon - nice. Certains des autres scripts de ne pas compter sur les chemins, soit (par exemple désactiver.chauve-souris) donc en bref, cela fonctionne.--relocatable
ET modifier le chemin d'accès à l'Python binaire au début de certains de l'environnement de scripts, droit?activate.ps1 cannot be made relative
peut être ignoré, parce que le script est déjà parent. Le message n'est pas utile dans Windows, car les scripts ne pas utiliser#!
directives en Linux pour indiquer au shell de l'application qui doit s'exécuter il. Leactivate.bat
n'obtient pas modifié, mais il n'est pas utilisé (au moins sur windows 10, appelantactivate
lance le Chic de script) donc non, je n'ai pas besoin de modifier les scripts. Le problème estpip.exe
qui n'ont un accès au python codée en dur et les besoins de l'édition avec un éditeur hexadécimal, ou tout simplement une réinstallation.venv
module ne prend pas en charge cette option. L'esprit si j'ai le modifier dans votre réponse?pip freeze
à un fichier de sorte que vous pouvez facilement réinstaller tous vos paquets, docker (fonctionne bien avec virtualenv est installé), conda, pyenv ou certains autres outils. Vous devriez être en mesure de créer des & détruisent l'environnement comme immuable de l'infrastructure, ils ne devraient pas être précieux.La
--relocatable
argumentvirtualenv
s'affiche pour vous permettre de le faire.virtualenv --relocatable my-python-venv
APRÈS l'environnement existe déjà.--help
:This fixes up scripts and makes all .pth files relative
. Non, il ne va pas rendre indépendant de la plateforme des bibliothèques. Si vous souhaitez la déplacer sur une autre plate-forme, vous auriez besoin de le réinstaller sur la base des python.Oui, cela devrait être possible si vous ne l'avez pas fait tout ce qui dépend du répertoire courant de l'virtualenv.
Toutefois, si vous avez le choix, la meilleure chose à faire est de créer de nouvelles virtualenv et commencer à utiliser la nouvelle virtualenv à la place. C'est le choix le plus sûr et le moins susceptible de causer des problèmes plus tard.
La documentation ne mentionner que:
Par exemple, si vous avez exécuté
setvirtualenvproject
alors il ne sera pas en mesure de basculer vers le bon répertoire, après l'exécution deworkon ...
donc, dans ce cas, vous devez corriger manuellement.En général un virtualenv est un peu plus qu'un répertoire avec le nécessaire de l'interpréteur Python fichiers de plus de paquets que vous avez besoin.
MAIS HÉLAS:
Non, vous ne pouvez pas simplement
mv
. Il existe des solutions de contournement, mais il pourrait être plus facile la réinstallation.... presses
enter
beaucoup de frustration, et les travaux suivantsSauf qu'il n'est pas de
my-python-venv
, ergo tristesse.Voulez
mv
votrevirtualenv
et de l'utiliser, autrement modifiées?Réponse Courte:
Bien, tu ne peut pas.
find bin -type f -exec ex -sc "%s,${FROM},${PWD},g|x" {} \;
en supposant que votre bin et lib sont dans votre venv dossier. J'utilise cela comme une façon rapide et sale pour copier et déplacer des python3 virtuel envs avec beaucoup de pip paquets installés.--relocatable
? Aussi, Nathan, bonne question, mais c'est une terrible réponse. L'acceptation de votre propre réponse est toujours un peu biaisé, sauf si il est bien écrit et clairement énumère les options, mais de déterminer que vous-même serait de toute façon subjective.mv
un venv?", et la réponse est "non vous ne pouvez pas simplementmv
, il existe des solutions de contournement, mais il pourrait être plus facile de réinstaller". Si c'était le haut de réponse, il me sauver et d'autres peu de temps.À l'aide des réponses des ce et d'autres sujets pour parler de sujet similaire, j'ai fait un script bash qui, situé et exécuté dans le virtualenv répertoire lui-même, aidera avec votre virtualenv se déplace.
Après avoir fait
virtualenv --relocatable yourenv
vous aurez besoin de changer votreVIRTUAL_ENV
variable à chaque fois que vous déplacez le répertoire, donc si vous n'avez pas wan pas le modifier manuellement, l'utilisation de ce.J'espère que cela aide.
Pour Python 3.3,+
virtualenv
est devenue un module intégré nommévenv
.La
--relocatable
option mentionné dans d'autres réponses n'a pas été inclus dansvenv
, et actuellement il n'existe pas de moyen sûr que je suis au courant pour renommer ou déplacer un Python environnement virtuel.Cependant, il y a une manière assez simple de simplement recréer, avec tous les paquets installés. Voir cette réponse sur la façon de renommer un environnement virtuel. Pendant le processus, vous pouvez recréer le nouvel environnement dans quel que soit l'endroit et quel que soit le nom que vous désirez.
Dans cette réponse, il n'en mentionner que quelques autres 3ème partie de paquets qui peuvent directe de la renomme ou déplace. Si vous êtes installés sur la poursuite d'une manière de déplacer un environnement virtuel intacte, vous pouvez regarder dans si ces travaux avec
venv
ainsi.Remarque: Dans cette réponse, il est axé sur
virtualenv
, plutôt que devenv
. Voir la section suivante pour savoir comment le traduire.venv
vs âgéesvirtualenv
syntaxe de commandeNotez que la commande pour venv est:
plutôt que de simplement
virtualenv
, qui s'installe comme une commande dans son emballage d'origine. Où "python" désigne cependant vous exécutez votre exécutable python, ce qui pourrait être une variété de choses, comme:python
py
oupy -3.7
ou similaires (la Python Lanceur pour Python 3.3,+)python3
(généralement nécessaire pour les environnements linux qui double installer python 2 et 3