"pip install --editable ./" 对比 "python setup.py develop"

"pip install --editable ./" vs "python setup.py develop"

有什么显着区别吗
pip install -e /path/to/mypackage

和 setuptools 变体?

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

尽量避免直接调用 setup.py,它不会正确地告诉 pip 您已经安装了包。

pip install -e:

For local projects, the “SomeProject.egg-info” directory is created relative to the project path. This is one advantage over just using setup.py develop, which creates the “egg-info” directly relative the current working directory.

更多:docs

另请阅读设置工具的 docs

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

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

有关车轮的更多信息:python wheels

另一个可能有利于 pip install -e 的区别是,如果您的项目在 setup.py 中具有 install_requires 中的依赖项,则 pip install -e . 使用 pip 安装依赖项,而 python setup.py develop 可以用 easy_install 安装,并且可能会引起问题 re: 'egg-info' 如上所述。当 install-requiresdependency_links 与自定义 git URL 一起使用,并带有附加的鸡蛋标识符时,这可能会特别烦人。

还有一个区别:当你 运行 python setup.py develop 一个被认为是预发布的版本时(可能是因为你 运行 从 git clone when not have checked out a release), 那么你将启用安装 依赖项的预发布 。另一方面,对于 pip install --editable,如果您想要这些预发布版本,则必须显式地传递 --pre

(参见CI log with pre-releases accidentally used and compare that to a fixed build here。)