Impossibile clonare Python venv su un altro PC

Sep 17 2020

Voglio clonare il mio venv esistente su un altro PC ma semplicemente copia incolla non funziona. Quando copio il venv e incollo sulla seconda macchina ed eseguo

elenco pip

Elenca solo pip e setup_tools come dipendenze installate. Ho provato un altro modo per clonare i pacchetti. Ho creato un nuovo venv nella seconda macchina e ho copiato tutto il file del primo venv in quel nuovo venv saltando i file esistenti con lo stesso nome in new venv. Ora, quando corro

elenco pip

Mostra tutte le dipendenze ma, quando provo ad avviare il notebook jupyter come

quaderno jupyter

Fornisce il seguente errore.

Errore irreversibile nel programma di avvio: impossibile creare il processo utilizzando "f: \ path \ to \ first_venv \ on_first_machine \ scripts \ python.exe" "C: \ path \ to \ new_venv \ on_the_second_machine \ Scripts \ jupyter.exe" notebook ": Il sistema non trova il file specificato.

Non so come far funzionare le cose. Per favore aiuto!

modificare

Il problema è che non ho una connessione Internet sulla seconda macchina. In realtà è una macchina remota con alcuni protocolli di sicurezza applicati e non avere una connessione Internet fa parte della sicurezza! Colpa mia :'(

Risposte

3 AKX Sep 17 2020 at 05:55

Non è possibile copiare e incollare venv da una macchina all'altra poiché gli script in essi contenuti possono fare riferimento a posizioni di sistema. (Lo stesso significa tentare di spostare i venv all'interno di una macchina.)

Ricrea invece l'ambiente sulla nuova macchina:

  1. Sulla vecchia macchina, esegui pip freeze -l > packages.txtnel virtualenv.
  2. Passa packages.txtalla nuova macchina.
  3. Crea un nuovo virtualenv sulla nuova macchina e inseriscilo.
  4. Installare i pacchetti dal file txt: pip install -r packages.txt.

MODIFICA: se non hai accesso a Internet sulla seconda macchina, puoi continuare dal passaggio 2 con:

  1. Corri pip wheel -w wheels -r packages.txtnella venv sulla prima macchina. Questo scaricherà e creerà *.whlpacchetti per tutti i pacchetti di cui hai bisogno. Notare che ciò presuppone che entrambe le macchine siano simili nel sistema operativo e nell'architettura!
  2. Copiare i file della ruota sulla nuova macchina.
  3. Crea un nuovo virtualenv sulla nuova macchina e inseriscilo.
  4. Installare i pacchetti da ruote nella nuova virtualenv: pip install *.whl.
1 MichaelAnckaert Sep 17 2020 at 05:57

Non dovresti mai copiare un ambiente virtuale tra le macchine. Il modo corretto è esportare le dipendenze installate nell'ambiente utilizzando pip freezee creare un nuovo ambiente virtuale sull'altra macchina.

# 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