Python 正在安装数据文件,然后再次找到它们

Python Installing data files and then finding them again

我有一个针对 linux 机器的 python 软件包,需要将其语言环境文件安装到可访问的位置。现在,我将它们安装到 sys.prefix + "/share/locale/".

但是,我发现 Ubuntu 和 pip 有一个小警告。在默认情况下,Ubuntu 将使用 pip 安装的软件包安装到 /usr/local 并在安装期间将 sys.prefix 设置为该值。但是,安装后,当包为 运行 时,前缀为 /usr,这意味着我的代码无法找到安装在 /usr/local.

的语言环境文件

我可以简单地对位置进行硬编码,但我不想这样做,因为它会降低软件包的可移植性,并且需要用户以 root 身份安装它。这些在 setup.py 中作为 data_files 添加,不会作为 python 包被发现。

我还能如何确保我的包可以在之后找到我的语言环境文件 安装?

我想在安装过程中向包的 __init__.py 添加一行,这会创建一个指向语言环境目录位置的变量。但是,在不更改源文件的情况下编辑正在安装的文件似乎并不简单。

这是一个 python 3 包。

也许使用 resource functions available in pkg_resources 来查找文件?

from pkg_resources import resource_stream, resource_filename
with resource_stream('my_package', 'locale/foo.dat') as infp:
    # ...
# ... or ...
foo_location = resource_filename('my_package', 'locale/foo.dat')