“pip install --editable ./”vs“python setup.py develop”

时间:2015-05-18 14:37:48

标签: python pip setuptools

之间是否有任何显着差异
pip install -e /path/to/mypackage

和setuptools变体?

python /path/to/mypackage/setup.py develop

4 个答案:

答案 0 :(得分:90)

没有太大的区别。

使用pip install -e

  

对于本地项目,将创建“SomeProject.egg-info”目录   相对于项目路径。这是一个优于使用的优势   setup.py develop,直接创建“egg-info”   当前的工作目录。

更多:docs

另请阅读setuptools'docs

答案 1 :(得分:63)

还有一个区别:pip install -e使用了轮子 python setup.py develop
不使用它。

使用install,您可以使用
实现相同的行为 pip install -e /path/to/package --no-use-wheel

轮子上的更多信息:python wheels

答案 2 :(得分:22)

可能有利于pip install -e的另一个区别是,如果您的项目在install_requires中的setup.py中具有依赖关系,那么pip install -e .将使用pip安装依赖项,而python setup.py develop可以安装easy_install,并可能导致问题:如上所述'egg-info'。当install-requiresdependency_links与自定义git网址一起使用时,使用附加的egg标识符,这可能会非常烦人。

答案 3 :(得分:2)

另一个区别是:如果您为一个被认为是预发行版本的版本运行python setup.py develop(也许是因为您在未签出发行版本的情况下是从git clone运行的),那么您将启用依赖的预发行版的安装。另一方面,如果要使用这些预发布版本,则pip install --editable必须显式地通过--pre

(请参见CI log with pre-releases accidentally used,并将其与a fixed build here进行比较。)