python - setup - Easy_install cache download files
python 3 setuptools (2)
¿Hay alguna forma de configurar easy_install para evitar tener que volver a descargar los archivos cuando falla una instalación?
pip ( http://pypi.python.org/pypi/pip/ ) es un reemplazo directo para la herramienta easy_install y puede hacerlo.
Simplemente ejecute easy_install pip
y establezca una variable de entorno PIP_DOWNLOAD_CACHE
en la ruta en la que quiere que pip almacene los archivos. Tenga en cuenta que la caché no funcionará con las dependencias que se descargan desde un repositorio de código fuente (como svn / git / hg / bzr).
Luego use pip install
lugar de easy_install
Aquí está mi solución usando pip, administrando incluso la instalación de paquetes binarios y utilizable tanto en Linux como en Windows. Y como se solicitó, limitará la descarga de PyPi al mininum y, como bonificación adicional, en Linux, permite acelerar la instalación repetida de paquetes que generalmente requieren compilación en una fracción de segundo.
La configuración toma algunos pasos, pero creo que vale la pena hacerlo.
Crear archivo de configuración pip
Crear archivo de configuración pip (en Linux: ~ / .pip / pip.conf, en Windows% HOME% / pip / pip.ini)
Mi uno tiene este contenido:
[global]
download-cache = /home/javl/.pip/cache
find-links = /home/javl/.pip/packages
[install]
use-wheel = yes
[wheel]
wheel-dir = /home/javl/.pip/packages
Poblar el directorio de cache
: se ejecuta automáticamente
El directorio de cache
obtendrá una versión en caché de los datos descargados de pypi cada vez, pip intenta obtener algún paquete de pypi. Es fácil conseguirlo allí (no es necesario tener cuidado especial), pero tenga en cuenta que, desde el punto de vista pip, estos son solo datos cobrados descargados de PyPi, no paquetes, por lo que en caso de que use una opción --no-index
, no trabajará.
pip install --download
para poblar packages
dir
El directorio de packages
es el lugar donde colocar los archivos del paquete real. Por ejemplo, para mi paquete favorito, lo haría:
$ pip install --download ~ / .pip / packages plac
y el archivo del paquete plac aparecería en ese directorio. Incluso puede usar el archivo -r requirements.txt
para hacer esto para múltiples paquetes a la vez.
Estos paquetes se usan incluso con $ pip install --no-index <something>
.
Evite la compilación repetida del mismo paquete en Linux
Por lxml
paquete lxml
requiere una compilación, y la descarga y compilación puede llevar de 45 segundos a minutos. Usando el formato de rueda, puede guardar aquí mucho.
Instale la herramienta de wheel
, si aún no la tiene:
$ pip install wheel
Cree la rueda para lxml
(asumiendo que ha logrado instalar lxml
en el pasado, requiere que se instalen algunas librerías en el sistema):
$ pip wheel lxml
Esto pasa por la descarga, la compilación, pero finalmente da como resultado que el archivo lxml whl
esté en el directorio de packgages
.
Desde entonces
$ pip install lxml
o incluso más rápido
$ pip install --no-index lxml
tomará una fracción de segundo, ya que usa un paquete con formato de rueda.
Preparar paquete de rueda desde el paquete de configuración de Windows
(Nota: esto se puede preparar incluso en máquinas con Linux, no hay compilación, solo algunas reempaquetaduras de archivos exe en whl
).
descargue la forma exe del paquete de pypi, por ejemplo:
$ wget https://pypi.python.org/packages/2.7/l/lxml/lxml-3.2.3.win32-py2.7.exe#md5=14ab978b7f0a3382719b65a1ca938d33 $ dir lxml-3.2.3.win32-py2.7 .exe
convertirlo a
whl
$ wheel convert lxml-3.2.3.win32-py2.7.exe $ dir lxml-3.2.3.win32-py2.7.exe lxml-3.2.3-cp27-none-win32.whl
Pruébalo:
$ pip install lxml
o
$ pip install --no-index lxml
será muy rápido.
Tenga en cuenta que esa wheel convert
puede hacer exactamente la misma conversión para paquetes con formato de huevo.
Deje easy_install
y setup.py install
reutilice sus packages
dir
easy_install
y $ python setup.py install
no parecen ofrecer caché de descarga, pero permiten usar los paquetes que tenemos en nuestros packages
dir.
Para hacerlo, edite el archivo de configuración para estas dos herramientas:
En Linux: $HOME/.pydistutils.cfg
En Windows: %HOME%/pydistutils.cfg
En mi caso, tengo aquí en /home/javl/.pydistutils.cfg
:
[easy_install]
find_links = /home/javl/.pip/packages
Esta configuración puede ayudar incluso en algunos casos de llamadas de pip install
de pip install
, cuando pip intenta instalar un paquete, declarando la dependencia de otros. A medida que delegue esta tarea en la llamada a setup.py
, sin la configuración .pydistutils.cfg
, descargará el archivo de PyPi.
Desafortunadamente, el formato de rueda no es compatible en este caso (hasta donde yo sé).