在virtualenv中安装:`pip install -e .` vs`python setup.py install` [英] Setup in virtualenv: `pip install -e .` vs `python setup.py install`
问题描述
我正在跟踪Flask教程,该教程让我使用virtualenv
,并以此构建了一个应用程序目录树,如下所示:
I'm following a Flask tutorial that has me using virtualenv
, and with it I built an app directory tree that looks like this:
app/
|__app/
|__app.egg-inf/
|__setup.py
|__venv/
在我的venv
里面,该教程告诉我运行pip install -e .
,它似乎正在使用我的setup.py
来安装依赖项和应用程序.
Inside my venv
the tutorial tells me to run pip install -e .
which appears to be using my setup.py
to install dependencies and my application.
为什么本教程让我运行pip install -e .
?为什么不python setup.py install
?有什么区别?
Why does the tutorial have me running pip install -e .
? Why not python setup.py install
? What are the differences?
(FWIW,export FLASK_APP=app; flask run
在pip install -e .
之后可以正常工作,但在python setup.py install
之后不能正常工作)
(FWIW, export FLASK_APP=app; flask run
works fine after pip install -e .
but doesn't work after a python setup.py install
)
推荐答案
首先,您提到的命令并不等效,特别是python setup.py install
不能为您提供可编辑的安装. pip <-> python setup.py
等效项是:
First, the commands you mention are not equivalent, specifically python setup.py install
does not give you an editable installation. The pip <-> python setup.py
equivalents are:
Editable pip setup.py
yes pip install -e . python setup.py develop
no pip install . python setup.py install
话虽如此,一般出于以下原因,建议使用pip
:
With that said, using pip
is in general recommended for a range of reasons:
- 依赖项会自动安装
- 有一种简单的卸载方法
对于您而言,我高度怀疑您的软件包具有依赖项,如果您使用pip,则该依赖项会自动安装,而如果您使用python setup.py install
则不会.
In your case, I highly suspect that your package has a dependency which is automatically installed if you use pip, but not if you use python setup.py install
.
这篇关于在virtualenv中安装:`pip install -e .` vs`python setup.py install`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!