Python setup.py开发vs安装

setup.py中的两个选项developinstall让我感到困惑。根据网站,使用develop创建一个指向site-packages目录的特殊链接。

人们建议我使用python setup.py install进行新的安装,并在对安装文件进行任何更改后使用python setup.py develop

有人能解释一下这些命令的用法吗?

181889 次浏览

python setup.py install用于安装(通常是第三方)你不打算自己开发/修改/调试的包。

对于你自己的东西,你想首先安装你的包,然后能够频繁地编辑代码没有,每次都必须重新安装包——而这正是python setup.py develop所做的:它安装包(通常只是一个源文件夹),以一种方式允许你在安装到(虚拟)环境后方便地编辑代码,并使更改立即生效。


注意:强烈建议使用pip install .(常规安装)和pip install -e .(开发人员安装)来安装包,因为直接调用setup.py会对许多依赖项做错误的事情,比如拉出预发布版和不兼容的包版本,或者使用pip很难卸载包。

更新:

最新的python -m build方法的develop对应物如下():

enter image description here

文档develop不会安装包,但它会在部署目录中创建一个.egg-link返回到项目源代码目录。

因此,这就像安装,但不是复制到site-packages,而是添加了一个符号链接(.egg-link充当多平台符号链接)。

这样你就可以编辑源代码并直接看到更改没有每次你做一点更改都必须重新安装。当你是该项目的开发人员时,这很有用,因此命名为develop。如果你只是安装别人的包,你应该使用install

在使用develop方法时,人们可能会发现另一件有用的事情是不使用sudo安装的--user选项。例:

python setup.py develop --user

而不是

sudo python setup.py develop