Impossible de cloner Python venv sur un autre PC

Sep 17 2020

Je veux cloner mon venv existant sur un autre PC mais simplement copier coller ne fonctionne pas. Quand je copie le venv et le colle sur la deuxième machine et l'exécute

liste pip

Il répertorie uniquement pip et setup_tools en tant que dépendances installées. J'ai essayé une autre façon de cloner les paquets. J'ai créé un nouveau venv dans la deuxième machine et copié tout le fichier du premier venv dans ce nouveau venv en sautant les fichiers existants avec le même nom dans le nouveau venv. Maintenant, quand je cours

liste pip

Il montre toutes les dépendances mais, lorsque j'essaye de lancer le notebook jupyter comme

cahier Jupyter

Cela donne l'erreur suivante.

Erreur fatale dans le lanceur: impossible de créer le processus en utilisant le notebook '"f: \ path \ to \ first_venv \ on_first_machine \ scripts \ python.exe" "C: \ path \ to \ new_venv \ on_the_second_machine \ Scripts \ jupyter.exe" notebook': Le système ne peut pas trouver le fichier spécifié.

Je ne sais pas comment faire fonctionner les choses. Veuillez aider!

Éditer

Le problème est que je n'ai pas de connexion Internet sur la deuxième machine. En fait, c'est une machine distante avec certains protocoles de sécurité appliqués et ne pas avoir de connexion Internet fait partie de la sécurité! Ma faute :'(

Réponses

3 AKX Sep 17 2020 at 05:55

Vous ne pouvez pas copier-coller des venv d'une machine à une autre car les scripts qu'ils contiennent peuvent faire référence à des emplacements système. (Il en va de même pour tenter de déplacer des venvs dans une machine.)

Au lieu de cela, recréez l'environnement sur la nouvelle machine:

  1. Sur l'ancienne machine, exécutez pip freeze -l > packages.txtdans le virtualenv.
  2. Passez packages.txtà la nouvelle machine.
  3. Créez une nouvelle virtualenv sur la nouvelle machine et entrez-la.
  4. Installez les paquets à partir du fichier txt: pip install -r packages.txt.

EDIT: Si vous n'avez pas d'accès Internet sur la deuxième machine, vous pouvez continuer à partir de l'étape 2 avec:

  1. Exécutez pip wheel -w wheels -r packages.txtle venv sur la première machine. Cela téléchargera et construira des *.whlpackages pour tous les packages dont vous avez besoin. Notez que cela suppose que les deux machines sont similaires dans le système d'exploitation et l'architecture!
  2. Copiez les fichiers de roue sur la nouvelle machine.
  3. Créez une nouvelle virtualenv sur la nouvelle machine et entrez-la.
  4. Installez les paquets de roues dans la nouvelle virtualenv: pip install *.whl.
1 MichaelAnckaert Sep 17 2020 at 05:57

Vous ne devez jamais copier un environnement virtuel entre des machines. La méthode correcte consiste à exporter les dépendances installées dans l'environnement en utilisant pip freezeet à créer un nouvel environnement virtuel sur l'autre machine.

# One the first machine
pip freeze > requirements.txt
# Copy requirements.txt to the other machine, or store in a source repository
# Then install the requirements in the new virtual environment
pip install -r requirements.txt