关于Heroku for Django应用程序的条件pip安装要求

时间:2012-08-22 18:13:31

标签: python django heroku pip

首先让我说,我认为没有办法做到这一点......但是,那里有很多聪明的人,所以我想我会问! :)

我在setting up a Django app on HerokuInternet Archive link)找到了一篇由Randall Degges撰写的好文章/帖子。我真的很喜欢他将你的需求分解成不同的文件(common.txt,dev.txt,prod.txt等)。

这适用于Heroku进行制作,但我也在Heroku上维护一个开发/质量保证站点,我有一些我不需要用于开发/质量保证的产品包。最好的例子是django-debug-toolbar。目前,我在生产的requirements.txt中有这个,我通过查看DEBUG设置动态决定是否需要在运行时在settings.py中将它添加到我已安装的应用程序等。

哪种方法很好......但是,如果我甚至无法在生产中安装它,那就太好了。我想我有点想要的是pip能够获取一个允许条件包含的需求文件(为什么它不能只带一个python文件?)或者Heroku支持一个配置设置,告诉它哪些需求文件使用。有人找到了实现这个目标的方法吗?还是只是一厢情愿的想法?

3 个答案:

答案 0 :(得分:4)

你有没有看过this

如果您的Python应用程序包含setup.py文件但不包含requirements.txt文件,则将使用python setup.py develop来安装您的软件包并解决您的依赖项。 这适用于分发或安装工具。将直接安装使用distutils的项目,但不会链接。在版本崩溃之前,模块不会更新。 如果您已有需求文件但希望使用此功能,则可以将以下内容添加到需求文件中:

-e .

然后按照Conditionally installing importlib on python2.6

中的建议进行操作

答案 1 :(得分:1)

我在buildout中有类似的需求并在那里实现它。 现在我正在从buildout迁移到pip,我出来了这个脚本,根据一些条件使用一些不同的需求文件,这些文件可以基于os / arch或某些环境变量或任何你喜欢的东西。粗暴但对我有效。

请参阅https://gist.github.com/pombredanne/72130ee6f202e89c13bb

答案 2 :(得分:0)

是的,这是一厢情愿的想法。 pip需求文件非常简单。从字面上看,所有pip都只是在文件中的每一行前加pip install,因此条件等都是禁止的。为每个环境提供单独的需求文件是一个不错的主意,但问题是为什么不只是为您的Dev / QA站点创建一个版本?

那就是说,我认为无论如何这都是学术性的。只需安装一个包就不会有任何损害。例如,如果您在生产中安装了django-debug-toolbar软件包并不重要,那么您的生产实例实际上不会使用它,所以除了几千字节的驱动器空间之外接受,这不是问题。

就个人而言,我总是只有一个需求文件,在那里,我只提出需求,即这些是网站实际上无法运行的包。像django-debug-toolbar,ipython等等。我只需要在需要时手动安装。