site setup create python packaging setuptools distribute

setup - python distribute package



¿Cómo puedo hacer que setuptools(o distribuir) instale un paquete desde el sistema de archivos local? (2)

Cuando quiero trabajar con un conjunto de proyectos interrelacionados, instalo todos ellos utilizando /setup.py develop .

Si por error o más tarde quiero hacer que un módulo instalado por pip sea editable, clono la fuente y hago un python setup.py develop en él también, sustituyendo al existente.

Solo para estar seguro, borro la referencia en los paquetes de sitio de virtualenv y el paquete en sí.

¿Es posible especificar dependencias de origen (editables) en setup.py que se sabe que residen en el sistema de archivos local?

Considere la siguiente estructura de directorios, todo lo cual vive en un único repositorio VCS:

projects utils setup.py ... app1 setup.py ... # app1 files depend on ../utils app2 setup.py ... # app2 files depend on ../utils

Dados los siguientes comandos:

cd projects mkvirtualenv app1 pip install -e app1

Me gustaría tener instaladas todas las dependencias para app1, incluyendo "utils", que es una dependencia "editable". Igualmente, si hiciera lo mismo para app2.

He intentado jugar con todas las combinaciones diferentes de file://... URL en install_requires y dependency_links sin ningún resultado. Me gustaría usar una URL de enlace de dependencia como src+file://../utils , que le diría a setuptools que la fuente del paquete se encuentra en el sistema de archivos en esta ruta relativa. ¿Hay alguna forma de hacer esto?


Tuve un problema idéntico en el que necesitaba depender de módulos en una carpeta de hermanos. Pude encontrar una solución después de encontrar https://caremad.io/2013/07/setup-vs-requirement/

Terminé Requirements.txt para referirme específicamente al archivo que quería, y luego instalar todo con

pip install -r requirements.txt

requisitos.txt

-e ../utils -e .

Y setup.py tiene todas mis otras dependencias, incluyendo utils. Cuando pip intenta instalar app1 en sí, se da cuenta de que la dependencia de utils ya se ha llenado y, por lo tanto, la pasa, mientras instala los otros requisitos.