¿Cómo crear un índice de repository pypi propio local sin espejo?

Tenemos varios paquetes Python propios y queremos crear un repository pypi local para ellos usando una interfaz simple como https://pypi.python.org/simple/

Este repository que quiero crear para local solo sin ningún reflection debido a razones de seguridad, y se pondrá bajo el control de apache

El comando pypimirror se debe inicializar una vez, lo que debe reflejar.

¿Cómo puedo generar PyPi Simple Index basado en paquetes locales de python?

¿Algún otro script simple para esto?

Desde que pediste responder aquí:

Echa un vistazo a pip2pi , parece ser exactamente lo que estás buscando.

Teníamos una necesidad similar en mi empresa. Básicamente, ¿cómo podemos cargar paquetes de “código cerrado” en un índice mientras podemos instalarlos como si estuvieran en PyPI?

Hemos patrocinado un proyecto llamado devpi que actúa como un caché de PyPI (los paquetes a los que accede desde PyPI se almacenarán en caché en su servidor), así como un servidor de índice rápido y potente. La documentación está disponible en http://doc.devpi.net/latest/ .

Siguiente en la hoja de ruta es la duplicación para la implementación de múltiples geos. Patear los neumáticos en su máquina demora aproximadamente 5 minutos (consulte las guías de inicio rápido). Finalmente, devpi es compatible con pip y easy_install (es decir, no necesita tener instalado el cliente devpi en su máquina).

Espero que esto ayude.

No hay nada especial en el espejo, y puede usar mod_rewrite para configurarlo usted mismo.

  1. Volcar sus paquetes en un directorio que se asigna a una URL. Aquí estoy usando /url/to/my/pypi/ an an example. La jerarquía de carpetas debe ser /foo/bar/simple/[name of package]/[name of tarball]

  2. Agregue lo siguiente a .htaccess o la configuración global para ese directorio donde están los paquetes. El último bloque de líneas es un retroceso al índice pypi global:

     Options +Indexes RewriteEngine On RewriteRule ^/robots.txt - [L] RewriteRule ^/icons/.* - [L] RewriteRule ^/index\..* - [L] RewriteCond /foo/bar/simple/ !-f RewriteCond /foo/bar/simple/ !-d RewriteRule ^/(.*)/?$ http://pypi.python.org/ [R,L] 
  3. Actualice su ~/.pip/pip.conf para que apunte al nuevo repository:

     [global] index-url = http://localhost/url/to/my/pypi/ 

    O use la opción -i http://localhost/url/to/my/pypi/ en la línea de comandos.

Si está hablando de ejecutar simplepypi, tendrá su servidor para agregar paquetes y entregarlos. Para citar la documentación:

 - Running this on the setup.py of your favorite package: python setup.py sdist upload -r local 

Si utilizara os.walk o glob.glob en su directorio local de paquetes de sitios, podría filtrar rápidamente por setup.py en cada uno de los paquetes / directorios e invocar lo anterior en ellos.

Si solo necesita crear un directorio de archivos tar.gz completo con una lista de .html de ellos, puede usar glob.glob en el nivel superior de su directorio de paquetes de sitio – tar.gz cada directorio a su vez y agregar el resultante nombre de archivo a una lista: luego puede generar su index.html a partir de esa lista.

Puede usar cualquiera de una gran cantidad de motores de plantillas para esto o generarlos usted mismo:

 import glob filelist = glob.glob("*.tar.gz") tags = ['%s' % (s,s) for s in tags] head = """         """ tail = """""" tags.insert(0,head) tags.append(tail) page = "\n".join(tags) 

Entonces guarde o sirva su página.

La forma más sencilla es organizar los archivos de paquete en direcciones con nombre de paquete y ejecutar un servidor HTTP simple. No se necesitan paquetes adicionales, el estándar de Python es suficiente. Ejemplo de estructura de directorio:

 └── repodir ├── setuptools │ └── setuptools-38.1.0-py2.py3-none-any.whl │ └── setuptools-38.1.0.zip │ └── setuptools-39.2.0-py2.py3-none-any.whl │ └── setuptools-39.2.0.zip ├── wheel │ └── wheel-0.31.1-py2.py3-none-any.whl ... 

Inicia el servidor:

 $ cd repodir/ $ python3 -m http.server 9000 $ # or for Python 2: $ python2 -m SimpleHTTPServer 9000 

El repository local está en funcionamiento. Ahora puedes pasar el repository a pip :

 $ pip install wheel --extra-index-url=http://127.0.0.1:9000 

o incluso persistir la URL de repo en el pip.conf para no ingresarla cada vez:

 # pip.conf [global] extra-index-url=http://127.0.0.1:9000 

Referencia: Guía del usuario de Python Packaging, Alojamiento de su propio repository simple