这应该是一个常见的场景,但还没有找到任何相关的帖子..
我计划部署一个 Python 库(我想这同样适用于常规应用程序),它使用一些图像和其他资源文件。此类物品的标准位置是什么?我想,对于 project Foo,选择是
- 在源存储库中有
resources目录,然后将文件移动到/usr/share/foo/ - 将资源直接放在下面的python包中
/usr/lib/python-<version>/foo/
有什么建议么?
编辑:正如建议的那样,澄清将在其上运行的主要平台是 Linux。
这个问题有些不完整,因为正确的答案取决于底层操作系统,因为每个操作系统都有自己的作案手法。在 linux(和大多数基于 unix 的操作系统)中,例如 /usr/share/foo 或 /usr/local/share/foo 将是标准。在 OS X 中你可以做同样的事情,但我认为“/Library/Application Support/Foo”(虽然这通常用于存储设置和诸如此类的东西)将是放置这些东西的地方,尽管如果你正在编写库之后“框架”的想法,所有资源都将包含在 /Library/Frameworks/Foo.Framework" ...另一方面,OS X 上的应用程序应将所有资源保留在 Foo.app 内的 Resources 目录中
我们将非 .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 发行版目录分开。
标准位置是您的标准库所在的位置。但是从您所写的内容中,我听起来并不觉得您需要您的 python 库。我认为您应该尝试一下Virtualenv。
如果你不想经历所有的麻烦(好吧,它真的只是sudo easy_install virtualenv为你),你可以尝试将你的 python lib 转储到你的任何目录中,~/然后按照以下方式做一些事情
import sys
sys.path.append( '/full/path/to/your/lib/goes/here')
到任何使用您的库的给定应用程序。