Python setup.py develop vs install

Net*_*tro 298 python setuptools

在setup.py两个选项develop,并install混淆了我.根据此站点,using使用develop特殊链接创建site-packages目录.

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

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

Eri*_*lun 411

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

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

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

  • 艾瑞克是对的.另外有用的是`setup.py develop`附带一个`--uninstall`选项,当你完成黑客攻击时. (74认同)
  • 最后想到的是,当攻击python包时,`setup.py develop`的另一个选择是使用"简单(但显式)路径修改来正确解析包"re [Kenneth Reitz](http://kennethreitz.org /储存库结构和 - 蟒/) (5认同)
  • 我使用`python setup.py develop`试图设置Ceilometer进行本地开发时遇到了问题.我最后使用`pip install -e PATH`(在virtualenv中)以避免[通过`easy_install`出现的问题](https://ask.openstack.org/en/question/87376/unable-to -setup-云高计合发展模式/). (4认同)
  • 它适用于 python3,但不要忘记删除您可能拥有的任何当前 pip 安装,因为它们会发生冲突(目前发生在我身上)。 (3认同)
  • 不确定这是否重要,但如果我使用 python 3 等,是否必须以不同的方式运行“python setup.pydevelop”? (2认同)
  • 那么什么时候应该使用“pip install -e”以及什么时候使用“python setup.pydevelop”呢?似乎总是前者? (2认同)

ece*_*ulm 107

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

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

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


K.S*_*.S. 18

人们在使用该develop方法时可能会觉得有用的另一件事是--user没有sudo的安装选项.例如:

python setup.py develop --user
Run Code Online (Sandbox Code Playgroud)

代替

sudo python setup.py develop
Run Code Online (Sandbox Code Playgroud)

  • 你不应该在你的系统中`setup.py develop`,这只在virtualenv中才有意义. (11认同)
  • 但是,许多(大多数?)人并没有在多用户系统上运行 (3认同)
  • 我不明白这是如何回答问题的。 (3认同)
  • @dividebyzero你是说应该总是使用`python setup.py develop --user`,如果我理解正确的话?另外,您能否通过使用`python setup.py develop --user`告诉我软件包的安装位置?谢谢! (2认同)
  • 我认为`--user`将安装在您家庭帐户的目录中,不会影响系统中的其他用户.`develop`将链接到您的项目源目录,而不是实际复制所有内容.`develop --user`应该没问题,并且在virtualenv中`develop`也是如此.只有`开发'到实际系统是很奇怪的,因为你可能有其他用户在你的项目源代码的个人副本中使用指向项目的东西. (2认同)
  • @boatcoder,Mac 和 Linux(以及 Windows)可能是多用户系统,但开发人员很可能是其桌面的唯一(真实)用户帐户,我相信这就是 Pastew 的意思。 (2认同)