之间是否有任何显着差异
pip install -e /path/to/mypackage
和setuptools变体?
python /path/to/mypackage/setup.py develop
答案 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-requires
将dependency_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进行比较。)