在虚拟环境中安装:`pip install -e .`与`python setup.py install`的区别

14

我正在跟随一个Flask教程,该教程让我使用virtualenv,并且我用它构建了一个应用程序目录树,看起来像这样:

app/
|__app/
|__app.egg-inf/
|__setup.py
|__venv/
在我的venv中,教程告诉我要运行pip install -e .来使用setup.py安装依赖项和应用程序。

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

(FWIW,在pip install -e .export FLASK_APP=app; flask run可以正常工作,但在python setup.py install后无法正常工作。)

1个回答

20

首先,您提到的命令不是等效的,具体而言,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则不会。


2
我认为2月21日的编辑将“install”和“develop”放在了setup.py的错误行上。 - Jared Casper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接