在virtualenv中设置:`pip install -e .` vs`python setup.py install`

时间:2017-07-31 23:34:54

标签: python pip virtualenv setup.py

我正在关注使用virtualenv的Flask教程,并使用它构建了一个应用程序目录树,如下所示:

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

在我的venv内,教程告诉我运行pip install -e .似乎正在使用我的setup.py来安装依赖项和我的应用程序。

为什么教程让我运行pip install -e .?为什么不python setup.py install?有什么区别?

(FWIW,export FLASK_APP=app; flask runpip install -e .之后正常工作,但在python setup.py install之后无法正常工作

1 个答案:

答案 0 :(得分:9)

首先,您提到的命令并不等效,具体而言python setup.py install不会为您提供可编辑的安装。 pip <-> python setup.py等价物是:

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

话虽如此,出于一系列原因,一般建议使用pip

  • 自动安装依赖关系
  • 有一种简便的方法可以卸载

在您的情况下,我非常怀疑您的软件包具有依赖关系,如果您使用pip,则会自动安装该关联,但如果您使用python setup.py install则不会。