¿Cuál es la mejor manera de descargar un paquete de python y sus dependencias de pypi para la instalación fuera de línea en otra máquina? ¿Hay alguna manera fácil de hacer esto con pip o easy_install? Estoy tratando de instalar la biblioteca de solicitudes en un cuadro de FreeBSD que no está conectado a Internet.
python
pip
freebsd
easy-install
python-requests
Chris Drantz
fuente
fuente
Respuestas:
Si el paquete está en PYPI, descárguelo y sus dependencias en algún directorio local. P.ej
Algunos paquetes pueden tener que archivarse en tarballs de aspecto similar a mano. Lo hago mucho cuando quiero una versión más reciente (menos estable) de algo. Algunos paquetes no están en PYPI, por lo que se aplica a ellos.
Supongamos que tiene una aplicación Python correctamente formada en
~/src/myapp
.~/src/myapp/setup.py
tendrá unainstall_requires
lista que menciona una o más cosas que tiene en su/pypi
directorio. Al igual que:Si quieres poder ejecutar tu aplicación con todas las dependencias necesarias mientras la pirateas, harás algo como esto:
De esta manera, su aplicación se ejecutará directamente desde su directorio de origen. Puedes hackear cosas y luego volver a ejecutar la aplicación sin reconstruir nada.
Si desea instalar su aplicación y sus dependencias en el entorno actual de Python, hará algo como esto:
En ambos casos, la compilación fallará si una o más dependencias no están presentes en el
/pypi
directorio. No intentará instalar de manera promiscua las cosas faltantes de Internet.Recomiendo invocar
setup.py develop ...
yeasy_install ...
dentro de un entorno virtual activo para evitar contaminar su entorno global de Python. Es (virtualenv que es) más o menos el camino a seguir. Nunca instales nada en el entorno global de Python.Si la máquina en la que ha creado su aplicación tiene la misma arquitectura que la máquina en la que desea implementarla, puede simplemente tarball todo el directorio del entorno virtual en el que
easy_install
introdujo todo. Sin embargo, justo antes de tarballing, debe hacer que el directorio del entorno virtual sea reubicable (consulte la opción --relocatable ). NOTA: la máquina de destino debe tener instalada la misma versión de Python, y también las dependencias basadas en C que pueda tener su aplicación también deben estar preinstaladas allí (por ejemplo, si depende de PIL , debe estar preinstalado libpng, libjpeg, etc.) .fuente
--allow-hosts=None
usar el interruptor--no-index
El
download
comando pip le permite descargar paquetes sin instalarlos:pip download -r requirements.txt
(En versiones anteriores de pip, esto se deletreaba
pip install --download -r requirements.txt
).Luego puede usar
pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt
para instalar esos sdists descargados, sin acceder a la red.fuente
--find-links file:/path/to/some/dir/
y debe descargar e instalar con la misma versión de pip; de lo contrario, podría fallarSi desea instalar libs de python y sus dependencias fuera de línea, termine de seguir estos pasos en una máquina con el mismo sistema operativo, red conectada y python instalado:
1) Cree un
requirements.txt
archivo con contenido similar (Nota: estas son las bibliotecas que desea descargar):Una opción para crear el archivo de requisitos es usar
pip freeze > requirements.txt
. Esto enumerará todas las bibliotecas en su entorno. Luego puede entrarrequirements.txt
y eliminar los innecesarios.2) Ejecute el comando
mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse
para descargar libs y sus dependencias en el directoriowheelhouse
3) Copie requerimientos.txt en el
wheelhouse
directorio4) Archivar la timonera
wheelhouse.tar.gz
contar -zcf wheelhouse.tar.gz wheelhouse
Luego cargue
wheelhouse.tar.gz
en su máquina de destino:1) Ejecutar
tar -zxf wheelhouse.tar.gz
para extraer los archivos2) Ejecutar
pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouse
para instalar las librerías y sus dependenciasfuente
pip install
al final, dice: ERROR: no se pudo encontrar una versión que satisfaga el requisito ... 'Python sin conexión. para hacer esto uso virtualenv (entorno aislado de Python)
1) instalar virtualenv en línea con pip:
o fuera de línea con whl: vaya a este enlace , descargue la última versión (.whl o tar.gz) e instálela con este comando:
al usar
--user
no necesitas usarsudo pip…
.2) usa virtualenv
en la máquina en línea, seleccione un directorio con terminal
cd
y ejecute este código:después de instalar todos los paquetes, debe generar un mensaje de texto
requirements.txt
mientras su virtualenv está activo, escribaabrir una nueva terminal y crear otro entorno como
myenv2
.ahora puede ir a su carpeta sin conexión donde están su carpeta
requirements.txt
ytranferred_packages
allí. descargue los paquetes con el siguiente código y póngalos todos en latranferred_packages
carpeta.lleve su carpeta fuera de línea a la computadora fuera de línea y luego
lo que está en la carpeta fuera de línea [required.txt, tranferred_packages {Flask-0.10.1.tar.gz, ...}]
lista de verificación de su paquete
nota: como estamos en 2017, es mejor usar python 3. puede crear python 3 virtualenv con este comando.
fuente
Descargue el tarball , transfiéralo a su máquina FreeBSD y extráigalo, luego ejecútelo
python setup.py install
y listo.EDITAR: solo para agregar eso, también puede instalar los tarballs con pip ahora.
fuente
Déjame pasar por el proceso paso a paso:
abra un símbolo del sistema o shell y ejecute el siguiente comando:
Supongamos que el paquete que quieres es
tensorflow
$ pip download tensorflow
Ahora, en la computadora de destino, copie la
packages
carpeta y aplique el siguiente comandoTenga en cuenta que
tensorflow-xyz.whl
debe reemplazarse por el nombre original del paquete requerido.fuente
Utilizando
wheel
paquetes compilados.abrigarse:
copiar tarball e instalar:
Tenga en cuenta que
wheel
los paquetes binarios no están en las máquinas.Más ref. aquí: https://pip.pypa.io/en/stable/user_guide/#installation-bundles
fuente
Tuve un problema similar. Y tuve que hacerlo instalar de la misma manera, lo hacemos desde pypi.
Hice las siguientes cosas:
Haga un directorio para almacenar todos los paquetes en la máquina que tienen acceso a Internet.
Descargue todos los paquetes a la ruta
Asfalte el directorio de paquetes y cópielo en la máquina que no tiene acceso a Internet. Entonces hazlo,
Copie los paquetes.tar.gz en la máquina de destino que no tiene acceso a Internet.
En la máquina que no tiene acceso a Internet, haga lo siguiente (suponiendo que haya copiado los paquetes tarred a / path / to / package / en la máquina actual)
y pegue el siguiente contenido dentro y guárdelo.
Finalmente, le sugiero que use alguna forma de
virtualenv
instalar los paquetes.Debería poder descargar todos los módulos que están en el directorio / ruta / a / paquete / .
Nota: Solo hice esto, porque no pude agregar opciones o cambiar la forma en que instalamos los módulos. De lo contrario lo hubiera hecho
fuente
Para Pip 8.1.2 puede usar
pip download -r requ.txt
para descargar paquetes a su máquina local.fuente