【问题标题】:Installing selected packages from requirements.txt从 requirements.txt 安装选定的包
【发布时间】:2013-11-14 13:50:02
【问题描述】:

我的开发机器上有一个 requirements.txt 文件。我已将其推送到 git repo 并将其克隆到服务器上。

我将更改推送到服务器的方式如下:

我在我的开发机器上冻结文件,然后将文件添加到 git 并将其拉到服务器上并执行 pip install -r requirements.txt。

但是这样做是一次又一次地安装所有的软件包,我不希望这样。我只希望安装那些未安装在服务器上的软件包。

这样做的最佳方法是什么?我还想知道将开发代码推送到服务器的其他有效方法。

【问题讨论】:

  • 我有点困惑,因为我的印象(和经验)一直是 pip 已经这样做了。当我执行pip install -r requirements.txt 时,对于已经安装的东西,它只会打印Requirement already satisfied 消息并且不会再安装它。
  • 这对我来说不会发生。它再次安装所有软件包,然后全部停用相同的软件包并保持其中一个处于活动状态。
  • 你使用哪个版本的 pip?
  • 版本为1.4.1。知道发生了什么吗?
  • 我在 Ubuntu 和 CentOS 上运行相同的版本,从来没有遇到过这个问题。

标签: python django pip


【解决方案1】:

使用buildout,这是另一种方法。 Buildout 在安装前检查包,所以它不会重新安装不需要的包。

这是一个非常强大的工具。部署的时候,你只需要制作git push,然后在你的生产服务器上做:

git pull
bin/buildout

就是这样。你可以阅读一篇关于Buildout and pip+virtualenv差异的文章

编辑:


您可以在settings.py 中设置PIP_DOWNLOAD_CACHE 路径,告诉pip 将所有下载的包存储在某个目录中(例如'packages'),这样就不会再次下载它们了:

import os.path

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
PIP_DOWNLOAD_CACHE = os.path.abspath(PROJECT_ROOT+'/packages/'),

【讨论】:

  • 有用的信息,但我真的很想在这个项目中使用 pip,因为我还在学习我现在不想尝试服务器。是否有任何命令告诉 pip 从 requirements.txt 安装选定的包?
  • 看看stackoverflow.com/questions/10336308/… 好像和你的问题差不多。您需要缓存下载的包以防止 pip 重新安装它们
猜你喜欢
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 2020-07-09
  • 2012-06-16
  • 2015-03-22
  • 1970-01-01
  • 2021-06-28
  • 2022-11-28
相关资源
最近更新 更多