Python setup.py develop vs install

问题描述 投票:268回答:3

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

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

任何人都可以了解这些命令的用法吗?

python setuptools
3个回答
393
投票

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

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

请注意,强烈建议使用pip install .(安装)和pip install -e .(开发人员安装)来安装软件包,因为直接调用setup.py会对许多依赖项执行错误操作,例如pull prereleases和不兼容的软件包版本,或者使软件包很难用pip卸载。


100
投票

来自documentationdevelop不会安装软件包,但它会在部署目录中创建一个.egg-link,返回项目源代码目录。

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

这样,您可以编辑源代码并直接查看更改,而无需在每次进行一些更改时重新安装。当您是该项目的开发人员时,这非常有用,因此名称为develop。如果你只是安装别人的包,你应该使用install


15
投票

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

python setup.py develop --user

代替

sudo python setup.py develop
© www.soinside.com 2019 - 2024. All rights reserved.