¿Hay alguna diferencia significativa entre
pip install -e /path/to/mypackage
y la variante setuptools?
python /path/to/mypackage/setup.py develop
¿Hay alguna diferencia significativa entre
pip install -e /path/to/mypackage
y la variante setuptools?
python /path/to/mypackage/setup.py develop
Respuestas:
Intente evitar llamar setup.py
directamente, no le dirá correctamente a pip que ha instalado su paquete.
Con pip install -e
:
Para proyectos locales, el directorio "SomeProject.egg-info" se crea en relación con la ruta del proyecto. Esta es una ventaja sobre el simple uso
setup.py develop
, que crea la "información del huevo" directamente relativa al directorio de trabajo actual.
Más: documentos
Lea también los documentos de setuptools .
Una diferencia más: pip install -e
usa la rueda mientras
python setup.py develop
no la usa.
Con install
, podría lograr el mismo comportamiento utilizando
pip install -e /path/to/package --no-use-wheel
Más información sobre ruedas: ruedas de pitón
--no-use-wheel
DEPRECATED a favor de--no-binary :all:
Otra diferencia que puede favorecer pip install -e
es que si su proyecto tiene dependencias en install_requires
en setup.py
, a continuación, pip install -e .
instala dependencias con PIP, mientras que python setup.py develop
se puede instalar con easy_install
, y puede causar problemas re: 'huevo-info' como se mencionó anteriormente. Cuando se install-requires
usa dependency_links
con URL de git personalizadas, con identificadores de huevo adjuntos, esto puede ser especialmente molesto.
pip install -e .
, esencialmente hace un enlace simbólico en el directorio relevante de paquetes de sitio de Python para apuntar a su copia de trabajo. A medida que se realizan cambios de código en esa copia de trabajo, se refleja instantáneamente en la versión "instalada", por lo que no necesita volver a ejecutar los comandos de instalación a medida que avanza. Esto es principalmente útil para el desarrollo de un repositorio que representa un paquete instalable, pero también puede ser útil para, por ejemplo, escribir alguna colección de módulos con sólo importaciones en términos absolutos, etc.
Otra diferencia más: cuando ejecuta python setup.py develop
una versión que se considera una versión preliminar (quizás porque lo está ejecutando desde un clon de git cuando no ha extraído una versión), entonces permitirá la instalación de versiones preliminares de sus dependencias . Por otro lado, con pip install --editable
usted tendría que pasar --pre
explícitamente si desea estos lanzamientos previos.
(Consulte el registro de CI con versiones preliminares utilizadas accidentalmente y compárelo con una compilación fija aquí ).