Dos opciones en setup.py developy installme confunden. Según este sitio , el uso developcrea un enlace especial al directorio de paquetes del sitio.
La gente me ha sugerido que lo use python setup.py installpara una instalación nueva y python setup.py developdespués de que se hayan realizado cambios en el archivo de instalación.
¿Alguien puede arrojar algo de luz sobre el uso de estos comandos?
python setup.py install se utiliza para instalar paquetes (generalmente de terceros) que no va a desarrollar / modificar / depurar usted mismo.
Para sus propias cosas, primero debe instalar su paquete y luego poder editar el código con frecuencia sin tener que volver a instalar el paquete cada vez, y eso es exactamente lo que python setup.py develophace: instala el paquete (generalmente solo una carpeta de origen) de una manera que le permita editar convenientemente su código después de que se haya instalado en el entorno (virtual) y que los cambios entren en vigencia de inmediato.
Tenga en cuenta que se recomienda encarecidamente usar pip install .(instalar) e pip install -e .(instalación de desarrollador) para instalar paquetes, ya que invocar setup.pydirectamente hará lo incorrecto para muchas dependencias, como lanzamientos previos y versiones de paquetes incompatibles, o dificultará la desinstalación del paquete pip.
Erik tiene razón. También es útil saber que setup.py developviene con una --uninstallopción para cuando hayas terminado de hackear.
philadams
55
El último pensamiento aquí es que otra opción para setup.py developpiratear un paquete de Python es usar "una modificación de ruta simple (pero explícita) para resolver el paquete correctamente" re Kenneth Reitz
philadams
44
Me encontré con problemas al python setup.py developtratar de configurar Ceilometer para el desarrollo local. Terminé usando pip install -e PATH(dentro de un virtualenv) para evitar problemas que surgieron a través deeasy_install .
Joe D'Andrea
1
No estoy seguro de si esto es importante, pero si estoy usando Python 3, etc., ¿hay que ejecutarlo de manera python setup.py developdiferente?
Charlie Parker
1
Funciona con python3, pero no se olvide de eliminar cualquier instalación de pip actual que pueda tener, ya que chocarán entre sí (me sucedió en este momento).
Léo Germond el
124
De la documentación . El developno va a instalar el paquete pero se creará una .egg-linken la parte trasera del directorio de implantación en el directorio de código fuente del proyecto.
Por lo tanto, es como instalar, pero en lugar de copiar site-packages, agrega un enlace simbólico ( .egg-linkactúa como un enlace simbólico multiplataforma).
De esa manera, puede editar el código fuente y ver los cambios directamente sin tener que volver a instalar cada vez que realice un pequeño cambio. Esto es útil cuando eres el desarrollador de ese proyecto, de ahí el nombre develop. Si solo está instalando el paquete de otra persona, debe usarinstall
IIUC nunca debe setup.py developen su sistema, esto solo tiene sentido en un virtualenv.
dividebyzero
2
@dividebyzero ¿Quiere decir que uno siempre debe usar python setup.py develop --user, si lo entiendo correctamente? Además, ¿podría decirme dónde está instalado el paquete usando python setup.py develop --user? ¡Gracias!
ROBOT AI
2
Creo que --userse instalará en un directorio en su cuenta de inicio y no afectará a otros usuarios en su sistema. El develophará que los enlaces a su directorio fuente del proyecto en lugar de copiar en realidad todo. develop --userdebería estar bien, y developen un virtualenv también. Solo developpara el sistema real es extraño, porque es posible que otros usuarios usen algo que apunte al proyecto en su copia personal del código fuente del proyecto.
dividebyzero
44
Muchos (?) La mayoría de la gente no se ejecutan en sistemas multiusuario, aunque
patstew
1
@boatcoder, Mac y Linux (y Windows) pueden ser sistemas con capacidad para múltiples usuarios , pero lo más probable es que el desarrollador sea la única cuenta de usuario (real) de su escritorio, y creo que eso es lo que significaba pegar.
setup.py develop
viene con una--uninstall
opción para cuando hayas terminado de hackear.setup.py develop
piratear un paquete de Python es usar "una modificación de ruta simple (pero explícita) para resolver el paquete correctamente" re Kenneth Reitzpython setup.py develop
tratar de configurar Ceilometer para el desarrollo local. Terminé usandopip install -e PATH
(dentro de un virtualenv) para evitar problemas que surgieron a través deeasy_install
.python setup.py develop
diferente?De la documentación . El
develop
no va a instalar el paquete pero se creará una.egg-link
en la parte trasera del directorio de implantación en el directorio de código fuente del proyecto.Por lo tanto, es como instalar, pero en lugar de copiar
site-packages
, agrega un enlace simbólico (.egg-link
actúa como un enlace simbólico multiplataforma).De esa manera, puede editar el código fuente y ver los cambios directamente sin tener que volver a instalar cada vez que realice un pequeño cambio. Esto es útil cuando eres el desarrollador de ese proyecto, de ahí el nombre
develop
. Si solo está instalando el paquete de otra persona, debe usarinstall
fuente
Otra cosa que la gente puede encontrar útil cuando usa el
develop
método es la--user
opción de instalar sin sudo. Ex:en vez de
fuente
setup.py develop
en su sistema, esto solo tiene sentido en un virtualenv.python setup.py develop --user
, si lo entiendo correctamente? Además, ¿podría decirme dónde está instalado el paquete usandopython setup.py develop --user
? ¡Gracias!--user
se instalará en un directorio en su cuenta de inicio y no afectará a otros usuarios en su sistema. Eldevelop
hará que los enlaces a su directorio fuente del proyecto en lugar de copiar en realidad todo.develop --user
debería estar bien, ydevelop
en un virtualenv también. Solodevelop
para el sistema real es extraño, porque es posible que otros usuarios usen algo que apunte al proyecto en su copia personal del código fuente del proyecto.