No se puede clonar Python venv en otra PC

Sep 17 2020

Quiero clonar mi venv existente en otra PC, pero simplemente copiar y pegar no funciona. Cuando copio el venv y lo pego en la segunda máquina y ejecuto

lista de pips

Solo enumera pip y setup_tools como las dependencias instaladas. Intenté otra forma de clonar los paquetes. Creé un nuevo venv en la segunda máquina y copié todo el archivo del primer venv en ese nuevo venv omitiendo los archivos existentes con el mismo nombre en el nuevo venv. Ahora, cuando corro

lista de pips

Muestra todas las dependencias pero, cuando intento iniciar el cuaderno jupyter como

cuaderno jupyter

Da el siguiente error.

Error fatal en el lanzador: No se puede crear el proceso usando '"f: \ ruta \ a \ first_venv \ on_first_machine \ scripts \ python.exe" "C: \ ruta \ a \ new_venv \ on_the_second_machine \ Scripts \ jupyter.exe" notebook': El sistema no puede encontrar el archivo especificado.

No sé hacer que las cosas funcionen. ¡Por favor ayuda!

Editar

El problema es que no tengo conexión a Internet en la segunda máquina. En realidad, es una máquina remota con algunos protocolos de seguridad aplicados y no tener conexión a Internet es parte de la seguridad. Culpa mía :'(

Respuestas

3 AKX Sep 17 2020 at 05:55

No puede copiar y pegar venvs de una máquina a otra ya que los scripts en ellos pueden referirse a ubicaciones del sistema. (Lo mismo significa intentar mover venvs dentro de una máquina).

En su lugar, vuelva a crear el entorno en la nueva máquina:

  1. En la máquina antigua, ejecute pip freeze -l > packages.txtvirtualenv.
  2. Pase packages.txta la nueva máquina.
  3. Cree un nuevo virtualenv en la nueva máquina e ingréselo.
  4. Instalar los paquetes desde el archivo txt: pip install -r packages.txt.

EDITAR: Si no tiene acceso a Internet en la segunda máquina, puede continuar desde el paso 2 con:

  1. Ejecute pip wheel -w wheels -r packages.txtel venv en la primera máquina. Esto descargará y creará *.whlpaquetes para todos los paquetes que necesite. Tenga en cuenta que esto asume que ambas máquinas son similares en sistema operativo y arquitectura.
  2. Copie los archivos de la rueda en la nueva máquina.
  3. Cree un nuevo virtualenv en la nueva máquina e ingréselo.
  4. Instalar los paquetes de ruedas en el nuevo virtualenv: pip install *.whl.
1 MichaelAnckaert Sep 17 2020 at 05:57

Nunca debe copiar un entorno virtual entre máquinas. La forma correcta es exportar las dependencias instaladas en el entorno utilizando pip freezey crear un nuevo entorno virtual en la otra máquina.

# 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