Port Python virtualenv a otro sistema

Estoy usando muchos paquetes de python como numpy, cuello de botella, h5py, … para mi trabajo diario en mi computadora. Ya que soy root en esta máquina, no es un problema instalar estos paquetes. Sin embargo, me gustaría usar mi “entorno” de paquetes diferentes también en una máquina servidor donde solo tengo una cuenta de usuario normal. Así que pensé en crear un entorno virtual (con virtualenv) en mi máquina instalando allí todos los paquetes necesarios. ¿Entonces solo copio toda la carpeta al servidor y puedo ejecutar todo desde ella?

Mi máquina usa Fedora 19 mientras que el servidor usa Ubuntu. ¿Es esto un problema? No pude encontrar ninguna información sobre cómo mover ese entorno virtual a otro sistema. La razón por la que me gustaría crear el entorno virtual en mi máquina primero es que faltan muchas herramientas en el servidor como python-dev, por lo que no puedo comstackr números por ejemplo.

Revisé las distribuciones de Anaconda y Enthought Python, pero no incluyen un par de paquetes que necesito. Además, debería haber una forma completamente “abierta” para este problema?

Error al mover el entorno virtual al servidor, ya que se queja de algunos archivos faltantes cuando importo los paquetes. Esto no es sorprendente, probablemente …

No debes mover tu virtualenv ya que está esencialmente vinculado a tu sistema python y el binario no funcionará en otras máquinas.

Sin embargo … puede exportar una lista de paquetes instalados e instalarlos en otro virtualenv a través de un archivo Requirements.txt.

Básicamente, lo que suelo hacer con la mayoría de mis proyectos:

 # Generate a requirements file: pip freeze > requirements.txt 

En la nueva máquina:

 # This uses virtualenvwrapper, but you can do it without as well mkproject my_project_name git clone git://..../ . pip install -r requirements.txt 

Habiendo comstackdo manualmente VTK y PySide2 para Python36, también me encontré doblando las reglas de virtualenv.

Hoy mismo, transferí mi virtualenv a otro sistema y, para facilitar las cosas, le di el mismo camino que tenía en el sistema anterior. Sin embargo, no tenía la misma ruta para Python en mi nuevo sistema. Afortunadamente, pude cambiar la ubicación que buscaba el virtualenv al alterar un archivo ‘orig-prefix.txt’ ubicado en [VIRTUALENV] / Lib.

La ruta de Python base que requiere un virtualenv se almacena en: [VIRTUALENV]/Lib/orig-prefix.txt

Si recuerdo correctamente, la ruta del virtualenv está incrustada en varios archivos. Por lo tanto, en un caso en el que necesitaba reubicar el virtualenv en una ruta diferente, simplemente lo recreé y copié todo, excepto el directorio [VIRTUALENV] / Scripts.

Probablemente esta no sea la forma en que se debe usar virtualenv, pero proporciona una solución alternativa. Además, tenga en cuenta que estoy haciendo esto en un entorno de Windows.