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

时间:2017-07-10 10:51:02

标签: python linux setuptools setup.py

我有一个针对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添加一行,这会创建一个指向locale dir位置的变量。但是,在不更改源文件的情况下编辑正在安装的文件似乎并不容易。

这是一个只有python 3的软件包。

1 个答案:

答案 0 :(得分:1)

也许使用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')