Según esta respuesta , apt-get
instala paquetes en todo el sistema (desde canónico), y solo pip
puede instalar paquetes en un virtualenv (desde Pypi).
Sin embargo, necesito instalar un paquete en un virtualenv al que solo se puede acceder a través de apt-get
, es decir, no está alojado por Pypi.
¿Cómo puedo hacer eso?
apt
software-installation
pip
romano
fuente
fuente
Respuestas:
Otra alternativa es descargar el archivo con
apt-get download
, extraerlodpkg -x
y mover los archivos extraídos a su virtualenv:Ejemplo:
Supongamos que esto da como resultado:
Luego, use dpkg para extraer la porción de datos del archivo .deb:
En el
./xyz-tmp
directorio recién creado , ahora tiene todos los archivos que se habrían instalado en/
(root) si los hubiera utilizadoapt-get install
.Supongamos que son:
Todavía necesita asignar los subdirectorios (p. Ej.,
dist-packages
Vs.site-packages
), y luego puede mover los archivos a su virtualenv (suponiendo un virtualenv/home/user/.virtualenvs/py27
):En comparación con mi respuesta anterior, este enfoque tiene la ventaja de que no tiene que investigar qué archivos se instalaron, porque puede verlos en el directorio de extracción. Todavía requiere una asignación de directorios entre el archivo extraído y el virtualenv.
fuente
Todo lo que se necesita para un virtualenv es la presencia de los archivos del paquete en el subárbol de su virtualenv. Entonces, siempre que pueda determinar qué archivos se instalaron en el sistema Python a través de apt-get, puede copiarlos en su virtualenv. Esto incluye archivos en el directorio de paquetes del sitio, así como en otros lugares dentro de su subárbol de Python (por ejemplo, scripts).
Ejemplo hipotético:
Suponga que instala un paquete llamado "xyz" en su sistema Python 2.7, puede obtener esto:
Copie los archivos relacionados con el paquete "xyz" en su virtualenv (suponiendo un virtualenv
/home/user/.virtualenvs/py27
):La dificultad es (1) determinar qué archivos pertenecen a un paquete en particular y (2) mapear los subdirectorios correspondientes entre el sistema Python y el virtualenv (p. Ej.,
dist-packages
Vs.site-packages
en el ejemplo anterior).Si alguien tiene más experiencia con esto, por favor comente.
fuente