¿Cuál es la mejor manera de descargar un paquete de python y sus dependencias de pypi para su instalación sin conexión en otra máquina? ¿Hay alguna manera fácil de hacer esto con pip o easy_install? Intento instalar la biblioteca de solicitudes en un cuadro de FreeBSD que no está conectado a Internet.Paquetes de Python Instalación sin conexión
Respuesta
Si el paquete está en PYPI, descárguelo y sus dependencias a algún directorio local. P. ej.
$ mkdir /pypi && cd /pypi $ ls -la -rw-r--r-- 1 pavel staff 237954 Apr 19 11:31 Flask-WTF-0.6.tar.gz -rw-r--r-- 1 pavel staff 389741 Feb 22 17:10 Jinja2-2.6.tar.gz -rw-r--r-- 1 pavel staff 70305 Apr 11 00:28 MySQL-python-1.2.3.tar.gz -rw-r--r-- 1 pavel staff 2597214 Apr 10 18:26 SQLAlchemy-0.7.6.tar.gz -rw-r--r-- 1 pavel staff 1108056 Feb 22 17:10 Werkzeug-0.8.2.tar.gz -rw-r--r-- 1 pavel staff 488207 Apr 10 18:26 boto-2.3.0.tar.gz -rw-r--r-- 1 pavel staff 490192 Apr 16 12:00 flask-0.9-dev-2a6c80a.tar.gz
Algunos paquetes pueden tener que ser archivados 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á install_requires
lista que menciona una o más cosas que usted tiene en su directorio /pypi
. De este modo:
install_requires=[
'boto',
'Flask',
'Werkzeug',
# and so on
Si usted quiere ser capaz de ejecutar su aplicación con todas las dependencias necesarias al tiempo que la piratería en él, que va a hacer algo como esto:
$ cd ~/src/myapp $ python setup.py develop --always-unzip --allow-hosts=None --find-links=/pypi
De esta manera su aplicación se ejecutará directamente desde su directorio de origen. Puede piratear cosas y luego volver a ejecutar la aplicación sin reconstruir nada.
Si desea instalar su aplicación y sus dependencias en el medio ambiente pitón actual, que va a hacer algo como esto:
$ cd ~/src/myapp $ easy_install --always-unzip --allow-hosts=None --find-links=/pypi .
En ambos casos, la construcción fallará si una o más dependencias aren' t presente en el directorio /pypi
. No intentará instalar de manera promiscua cosas que faltan de Internet.
Recomiendo invocar setup.py develop ...
y easy_install ...
dentro de un virtual environment activo para evitar contaminar el entorno global de Python. Es (virtualenv eso es) más o menos el camino a seguir. Nunca instale nada en el entorno global de Python.
Si la máquina que usted ha construido su aplicación tiene misma arquitectura que la máquina en la que desea implementar, puede simplemente tarball todo el directorio del entorno virtual en el que easy_install
-Ed 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 necesita tener instalada la misma versión de Python, y también cualquier dependencia basada en C que su aplicación pueda tener preinstalada allí (por ejemplo, si depende de PIL, entonces libpng, libjpeg, etc. pre instalado).
En lugar de '--allow-hosts = None' puede usar el interruptor' --no-index' – romor
¿Puede explicar cómo crear una aplicación Python correctamente formada? –
@PrabhjotRai consulte el problema https://packaging.python.org/distributing/ –
Descargue el tarball, transfiéralo a su máquina FreeBSD y extráigalo, luego ejecute python setup.py install
y ¡listo!
EDITAR: Solo para agregarlo, también puede instalar los archivos tar con pip ahora.
¿Qué hay de todas las dependencias? ¿Cuál es la mejor manera de resolverlos? ¿Debo instalar las dependencias manualmente también? –
Sí, desafortunadamente es la única forma que conozco. – dav1d
Utilizo la opción -d
(o --download
) en pip install
, lo que hace que el proceso de descarga de archivos sdist de PyPI sea mucho más simple.Por ejemplo, pip install --download /path/to/some/dir celery
descargará los tarballs sdist para el apio y todas sus dependencias al /path/to/some/dir
(pero no los instalará). Luego puede usar pip install --no-index --find-links /path/to/some/dir/ celery
para instalar apio usando los archivos descargados, sin tener que acceder a la red.
El mismo proceso funciona si se reemplaza celery
en ambos comandos con -r requirements.txt
, donde requirements.txt es un archivo requerimientos listado PIP todos los paquetes que desee (y opcionalmente las versiones que desee).
ACTUALIZACIÓN
Deprecation: pip instalación --download ha quedado obsoleto y será eliminado en el futuro. Pip ahora tiene un comando download que debería ser usado en su lugar.
El comando es la siguiente:
pip download -r requirements.txt
Para python3:
pip3 download -r requirements.txt
con esto es que las dependencias pueden tener otras dependencias y no se descargarán. – vikki
[Cesta de serpientes] (https://github.com/prezi/snakebasket) (construida en la parte superior de pip) también descargará las dependencias de las dependencias. – vikki
@vikki No es cierto, "pip install --download" también descarga dependencias, por lo que los comandos anteriores funcionarán correctamente incluso si sus requisitos tienen dependencias adicionales. La canasta de serpientes puede hacer otras cosas útiles (nunca la usó), pero definitivamente no es necesaria por esa razón. –
para Pip 8.1.2 se puede utilizar pip download -r requ.txt
descargar paquetes en el equipo local.
python fuera de línea. para hacer esto yo uso virtualenv (aislado ambiente Python)
1) instalar virtualenv en línea con pip:
pip install virtualenv --user
o fuera de línea con whl: ir a este link, descarga última versión (.whl o alquitrán. GZ) e instalar que con este comando:
pip install virtualenv-15.1.0-py2.py3-none-any.whl --user
utilizando --user
que no es necesario utilizar sudo pip…
.
2) utilizar virtualenv
en la máquina en línea seleccionar un directorio con el terminal cd
y ejecutar este código:
python -m virtualenv myenv
cd myenv
source bin/activate
pip install Flask
después de instalar todos los paquetes, lo que tiene que generar un requirements.txt
así que mientras su virtualenv es activa, escribir
pip freeze > requirements.txt
abrir una nueva terminal y crear otro env como myenv2
.
python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
ls
Ahora puede ir a la carpeta fuera de línea donde su carpeta requirements.txt
y tranferred_packages
están ahí. descargue los paquetes con el siguiente código y colóquelos todos en la carpeta tranferred_packages
.
pip download -r requirements.txt
tomar su carpeta sin conexión a la computadora sin conexión y luego
python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
cd offline
pip install --no-index --find-links="./tranferred_packages" -r requirements.txt
lo que está en la carpeta sin conexión [requirements.txt, tranferred_packages {matraz de 0.10.1.tar.gz, ...} ] lista
cheque de su paquete
pip list
nota: ya que estamos en el año 2017 que es mejor utilizar Python 3. yo Puedes crear python 3 virtualenv con este comando.
virtualenv -p python3 envname
Parece que faltan algunos pasos u "se ofuscaron" aquí, esperaría ver un 'desactivar' y luego 'congelar pip' ... cd fuera de línea y ./tranferred_packages aparece de la nada: ¿claramente esto necesita una limpieza? – Hannu
tal vez, pero debería considerar 'quería una breve publicación', 'ese proceso fue complejo y no pude escribir cada paso (eso solo es posible en YouTube)'. – cyera
Utilizando wheel
paquetes compilados.
paquete hasta:
$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ pip wheel -r requirements.txt --wheel-dir=$tempdir
$ cwd=`pwd`
$ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *)
copia tar e instalar:
$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2)
$ pip install --force-reinstall --ignore-installed --upgrade --no-index --no-deps $tempdir/*
Nota wheel
paquetes binarios no están al otro lado máquinas.
Más ref. aquí: https://pip.pypa.io/en/stable/user_guide/#installation-bundles
Tuve problemas para agruparme en la máquina con Python 3.6 y extraer en otra con Python 3.5: "_
- 1. PyDev instalación sin conexión
- 2. Instalación de paquetes Python en Windows
- 3. instalación desatendida de paquetes binarios python (módulos) para Windows
- 4. python pip instalación silenciosa
- 5. La instalación del paquete no funciona sin conexión
- 6. Instale R Paquetes sin Internet
- 7. paquetes de importación de Python
- 8. instalando paquetes de python en android
- 9. ¿Dónde puedo descargar un instalador sin conexión de Cygwin?
- 10. Sin conexión (CD, unidad Thumb, etc.) ¿Instalar HTML + Video sin instalación?
- 11. conexión UI.Dialog para C# proyecto de instalación
- 12. Instalación manual de Cygwin sin usar Setup.exe
- 13. Virtualenv en Ubuntu sin paquetes de sitio
- 14. R Novato confundido sobre la instalación de paquetes
- 15. Instalación de paquetes múltiples a través de Vagrant + Chef
- 16. Instalación de maven2 sin openjdk
- 17. Instalación de GHC sin raíz
- 18. Python PyAudio problemas de instalación (con PortAudio)
- 19. Instalación de PIP y ruta de Python
- 20. Instalación de paquetes R disponibles para todos los usuarios
- 21. NSIS Vs WiX Vs toda otra instalación de paquetes
- 22. Comprobación de paquetes instalados y si no se encuentra instalación
- 23. ¿Cómo instalar Python desde el origen sin conexión a Internet?
- 24. Descargue la documentación de XCode 4.2 para la instalación sin conexión
- 25. Python instalación de desinstalación easy_install
- 26. ¿Cómo elimino los paquetes instalados con Easy_install de Python?
- 27. Sin conexión Amazon S3
- 28. Plantillas HTML sin conexión
- 29. Uso de Backbone.js sin conexión
- 30. Conexión HTTPS Python
Relacionados: [¿Cómo instalar paquetes de pip según requirements.txt desde un directorio local?] (http://stackoverflow.com/q/7225900/95735) –