6

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

我发现了 Randall Degges 的一篇关于在 Heroku 上设置 Django 应用程序的好文章/帖子(Internet 存档链接)。我真的很喜欢他所说的将您的需求分解为不同的文件(common.txt、dev.txt、prod.txt 等)。

这在 Heroku 上非常适用于生产,但我还在 Heroku 上维护了一个 Dev/QA 站点,并且我有一些我确实不需要用于 Dev/QA 的产品包。最好的例子是 django-debug-toolbar。目前,我的生产 requirements.txt 中确实有这个,我通过查看 DEBUG 设置动态决定是否需要在运行时将它添加到我安装的应用程序等。

哪个工作正常......但是,如果我什至不用费心将它安装在产品中,那就太好了。我想我想要的是让 pip 能够获取一个允许条件包含的需求文件(为什么它不能只获取一个 python 文件?)或者让 Heroku 支持一个配置设置来告诉它哪个需求文件使用。有没有人找到实现这一目标的方法?还是只是一厢情愿?

4

3 回答 3

5

你调查过这个吗?

如果您的 Python 应用程序包含 setup.py 文件但不包括 requirements.txt 文件,则 python setup.py develop 将用于安装您的包并解决您的依赖项。这最适用于分发或设置工具。直接使用 distutils 的项目会被安装,但不会被链接。该模块不会得到更新,直到有版本碰撞。如果您已经有一个需求文件但想利用此功能,您可以将以下内容添加到您的需求文件中:

-e .

然后按照有条件地在 python2.6 上安装 importlib 中的建议进行操作

于 2012-08-22T18:38:54.917 回答
1

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

https://gist.github.com/pombredanne/72130ee6f202e89c13bb

于 2014-08-01T10:21:30.257 回答
0

是的,这是一厢情愿。pip 需求文件非常简单。从字面上看,所有 pip 所做的只是pip install添加到文件中的每一行,因此条件等是不可行的。为每个环境提供单独的需求文件是个好主意,但问题是为什么不为您的开发/质量保证站点也提供一个版本?

也就是说,无论如何,我认为这有点学术。简单地安装一个软件包并不会伤害任何东西。例如,即使在生产环境中安装了 django-debug-toolbar 包也没关系,您的生产实例实际上不会使用它,所以除了它占用的几千字节的驱动器空间之外,这不是问题.

就我个人而言,我总是只有一个需求文件,并且在其中我只放了requirements,即这些是网站字面上无法运行的包。诸如 django-debug-toolbar、ipython 等之类的东西。我只是在需要时手动安装。

于 2012-08-22T18:36:26.960 回答