python包的标准非代码资源位置

时间:2009-05-11 18:13:15

标签: python resources location package shared

这应该是常见的情况,但找不到任何相关的帖子..

我计划部署一个Python库(我想这同样适用于常规应用程序),它使用了一些图像和其他资源文件。这些物品的标准位置是什么?我想,对于项目Foo,选择将是

  • 在源存储库中有resources目录,然后将文件移动到/usr/share/foo/
  • 将资源直接放在/usr/lib/python-<version>/foo/
  • 下的python包中

有什么建议吗?

编辑:正如所建议的,澄清这将运行的主要平台是Linux。

3 个答案:

答案 0 :(得分:2)

这个问题有点不完整,因为正确的答案取决于底层操作系统,因为每个操作系统都有自己的操作方法。在linux(和大多数基于unix的操作系统)中,例如/ usr / share / foo或/ usr / local / share / foo将是标准。在OS X中你可以做同样的事情,但我认为“/ Library / Application Support / Foo”(尽管通常用于存储设置和诸如此类的东西)将是放置这些东西的地方,尽管如果你正在编写库之后“框架”的想法,所有资源都将包含在/Library/Frameworks/Foo.Framework中“...另一方面,OS X上的应用程序应该保留Foo.app中的Resources目录中的所有资源

答案 1 :(得分:2)

我们将非.py文件放在/opt/foo/foo-1.2/...

当然,除了Apache提供的静态媒体之外,还有/var/www/html/foo/foo-1.1/media/...

当然,除了客户特定的配置文件。他们去了 /var/opt/customer/foo/...

我理解它们遵循Linux标准。

我们试图远离/usr/lib//lib种位置,因为他们觉得他们是分发的一部分。我们倾向于/opt/var因为它们与linux发行版目录明显分开。

答案 2 :(得分:0)

标准位置是标准库所在的位置。但是你从你写的内容中听起来并不是这样,你会想要你的python lib。我想你应该试试Virtualenv

如果你不想经历所有麻烦(嗯,它真的只等于你sudo easy_install virtualenv),你可以尝试将你的python lib转储到{{1}中的任何目录中并按照

的方式做一些事情
~/

使用您的lib的任何给定应用程序。

请注意,给出的示例仅用于测试目的。对于任何现实,我建议您使用distutil。使用示例为here