我有一个针对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的软件包。
答案 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')