在setup.py的develop和install中有两个选项让我感到困惑。根据这个网站,使用develop会创建一个到site-packages目录的特殊链接。
人们建议我使用python setup.py install进行新的安装,并在对安装文件进行任何更改后使用python setup.py develop。
有人能解释一下这些命令的用法吗?
在setup.py的develop和install中有两个选项让我感到困惑。根据这个网站,使用develop会创建一个到site-packages目录的特殊链接。
人们建议我使用python setup.py install进行新的安装,并在对安装文件进行任何更改后使用python setup.py develop。
有人能解释一下这些命令的用法吗?
当前回答
来自文档。develop不会安装这个包,但它会在部署目录中创建一个.egg-link,返回到项目源代码目录。
因此,它就像安装,但不是复制到站点包,而是添加了一个符号链接(.egg-link充当多平台符号链接)。
这样,您就可以编辑源代码并直接查看更改,而不必在每次进行一些更改时重新安装。当你是该项目的开发人员时,这很有用,因此得名develop。如果你只是安装别人的包,你应该使用install
其他回答
Python setup.py install用于安装(通常是第三方)你不打算自己开发/修改/调试的包。
对于你自己的东西,你希望首先安装你的包,然后能够频繁地编辑代码,而不必每次都重新安装包——这正是python setup.py develop所做的:它安装包(通常只是一个源文件夹)的方式允许你在安装到(虚拟)环境后方便地编辑代码,并使更改立即生效。
注意:强烈建议使用pip install。(常规安装)和PIP安装-e。(developer install)来安装包,因为直接调用setup.py会对许多依赖项做错误的事情,比如提取预发布版和不兼容的包版本,或者使包难以用pip卸载。
更新:
最新的python -m构建方法的开发对应程序如下(根据):
来自文档。develop不会安装这个包,但它会在部署目录中创建一个.egg-link,返回到项目源代码目录。
因此,它就像安装,但不是复制到站点包,而是添加了一个符号链接(.egg-link充当多平台符号链接)。
这样,您就可以编辑源代码并直接查看更改,而不必在每次进行一些更改时重新安装。当你是该项目的开发人员时,这很有用,因此得名develop。如果你只是安装别人的包,你应该使用install
在使用develop方法时,人们可能会发现另一件有用的事情是——user选项,可以在不使用sudo的情况下安装。例:
python setup.py develop --user
而不是
sudo python setup.py develop