Y a-t-il une différence significative entre
pip install -e /path/to/mypackage
et la variante setuptools?
python /path/to/mypackage/setup.py develop
Y a-t-il une différence significative entre
pip install -e /path/to/mypackage
et la variante setuptools?
python /path/to/mypackage/setup.py develop
Réponses:
Essayez d'éviter d'appeler setup.py
directement, cela ne dira pas correctement à pip que vous avez installé votre paquet.
Avec pip install -e
:
Pour les projets locaux, le répertoire «SomeProject.egg-info» est créé par rapport au chemin du projet. C'est un avantage par rapport à la simple utilisation
setup.py develop
, qui crée le "egg-info" directement par rapport au répertoire de travail actuel.
Plus: docs
Lisez également des setuptools docs .
Une autre différence: pip install -e
utilise la roue
python setup.py develop
sans l'utiliser.
Avec install
, vous pouvez obtenir le même comportement en utilisant
pip install -e /path/to/package --no-use-wheel
Plus d'informations sur les roues: roues en python
--no-use-wheel
en faveur de--no-binary :all:
Une autre différence qui peut favoriser pip install -e
est que si votre projet a des dépendances dans install_requires
in setup.py
, alors pip install -e .
installe les dépendances avec pip, tandis que python setup.py develop
peut installer avec easy_install
, et peut causer des problèmes re: 'egg-info' comme mentionné ci-dessus. Lorsqu'il est install-requires
utilisé dependency_links
avec des URL git personnalisées, avec des identifiants d'oeuf attachés, cela peut être particulièrement ennuyeux.
pip install -e .
, il crée essentiellement un lien symbolique dans le répertoire site-packages Python approprié pour pointer vers votre copie de travail. Lorsque des modifications de code sont apportées à cette copie de travail, elles sont instantanément reflétées dans la version "installée", vous n'avez donc pas besoin de réexécuter les commandes d'installation au fur et à mesure. Ceci est principalement utile pour développer dans un référentiel qui représente un package installable, mais peut également être pratique pour, par exemple, écrire une collection de modules avec uniquement des importations absolues, etc.
Encore une autre différence: lorsque vous exécutez python setup.py develop
pour une version qui est considérée comme une pré-version (peut-être parce que vous l'exécutez à partir d'un clone git sans avoir extrait de version), vous activerez l'installation des pré-versions de vos dépendances . D'autre part, avec pip install --editable
vous auriez à passer --pre
explicitement si vous voulez ces pré-versions.
(Consultez le journal CI avec les pré-versions utilisées accidentellement et comparez-le à une version fixe ici .)