【问题标题】:Python setup.py develop vs installPython setup.py 开发与安装
【发布时间】:2013-10-03 15:09:01
【问题描述】:

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

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

谁能解释一下这些命令的用法?

【问题讨论】:

  • 如果您正在寻找如何在没有. 的情况下调用pip install -e 的示例,您可以这样做:pip install -e ~/ultimate-utils/ultimate-utils-proj-src/ 其中path/src 是指向项目源代码的路径,其中@ 987654332@ 在。这是一个有用的相关问题:stackoverflow.com/questions/35064426/…

标签: python setuptools


【解决方案1】:

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

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


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

【讨论】:

  • 埃里克是对的。还需要知道的是,setup.py develop 带有一个 --uninstall 选项,用于在您完成黑客攻击时使用。
  • 最后一个想法是setup.py develop 在对 python 包进行黑客攻击时的另一个选择是使用“简单(但显式)路径修改来正确解析包”re Kenneth Reitz
  • 我在使用 python setup.py develop 尝试设置 Ceilometer 以进行本地开发时遇到了问题。我最终使用pip install -e PATH(在virtualenv中)以避免problems that cropped up via easy_install
  • 不确定这是否重要,但如果我使用 python 3 等,是否必须以不同的方式运行 python setup.py develop
  • 它适用于 python3,但不要忘记删除您可能拥有的任何当前 pip 安装,因为它们会发生冲突(目前发生在我身上)。
【解决方案2】:

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

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

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

【讨论】:

  • 这个答案救了我的命!
【解决方案3】:

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

python setup.py develop --user

而不是

sudo python setup.py develop

【讨论】:

  • IIUC 你不应该在你的系统中setup.py develop,这只在 virtualenv 中才有意义。
  • @dividebyzero 如果我理解正确,您的意思是应该始终使用python setup.py develop --user?另外,能否请您告诉我使用python setup.py develop --user 安装软件包的位置?谢谢!
  • 我认为--user 会安装在您的家庭帐户的目录中,不会影响您系统中的其他用户。 develop 将链接到您的项目源目录,而不是实际复制所有内容。 develop --user 应该没问题,develop 也在 virtualenv 中。实际系统中只有develop 很奇怪,因为您可能有其他用户在您的项目源代码的个人副本中使用指向该项目的东西。
  • 许多(大多数?)人并未在多用户系统上运行
  • 我看不出这如何回答所问的问题。
猜你喜欢
  • 2017-09-03
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2019-07-01
  • 2021-05-20
  • 2019-09-24
  • 2016-04-24
相关资源
最近更新 更多