223

之间是否有显着差异

pip install -e /path/to/mypackage

和 setuptools 变体?

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

4 回答 4

171

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

pip install -e

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

更多:文档

另请阅读 setuptools 的文档

于 2015-05-18T14:51:04.883 回答
87

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

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

有关轮子的更多信息:python 轮子

于 2015-08-13T11:34:54.920 回答
47

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

于 2017-08-24T13:53:01.417 回答
6

另一个区别:当你运行python setup.py develop一个被认为是预发布的版本时(可能是因为你在没有签出版本的情况下从 git clone 运行它),那么你将启用安装依赖项的预发布. 另一方面,如果您想要这些预发布版本,则必须明确pip install --editable通过。--pre

(请参阅CI 日志,其中包含意外使用的预发布版本,并将其与此处的固定版本进行比较。)

于 2020-06-26T16:26:50.973 回答