2017-07-31 3 views
4

Je suis un tutoriel Flask qui utilise moi virtualenv, et avec lui j'ai construit un arbre de répertoire d'application qui ressemble à ceci:Installation dans virtualenv: `pip install -e .` vs` python setup.py install`

app/ 
|__app/ 
|__app.egg-inf/ 
|__setup.py 
|__venv/ 

Dans mon venv le tutoriel me dit de courir pip install -e . qui semble utiliser mon setup.py pour installer les dépendances et mon application. Pourquoi le tutoriel m'exécute-t-il? pip install -e .? Pourquoi pas python setup.py install? Quelles sont les différences?

(FWIW, export FLASK_APP=app; flask run fonctionne très bien après pip install -e . mais ne fonctionne pas après un python setup.py install)

Répondre

3

D'abord, les commandes que vous évoquez ne sont pas équivalentes, en particulier python setup.py install ne vous donne pas une installation modifiable. Les pip <-> python setup.py équivalents sont:

Editable pip     setup.py 
yes  pip install -e .  python setup.py install  
no   pip install .   python setup.py develop  

Cela dit, à l'aide pip est en général recommandé pour diverses raisons:

  • Les dépendances sont automatiquement installés
  • Il est un moyen facile de désinstaller

Dans votre cas, je soupçonne fortement que votre paquet a une dépendance qui est automatiquement installée si vous utilisez pip, bu t pas si vous utilisez python setup.py install.