Impossibile clonare Python venv su un altro PC
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
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:
- Sulla vecchia macchina, esegui
pip freeze -l > packages.txtnel virtualenv. - Passa
packages.txtalla nuova macchina. - Crea un nuovo virtualenv sulla nuova macchina e inseriscilo.
- 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:
- 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! - Copiare i file della ruota sulla nuova macchina.
- Crea un nuovo virtualenv sulla nuova macchina e inseriscilo.
- Installare i pacchetti da ruote nella nuova virtualenv:
pip install *.whl.
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