【发布时间】:2017-12-14 01:48:21
【问题描述】:
我有一个针对需要将其语言环境文件安装到可访问位置的 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 的包。
【问题讨论】:
-
你确定你没有两个 Python——在 /usr/local/bin 和 /usr/bin 中吗?我不相信 Python 会以这种方式改变
sys.prefix。但是 2 个不同的 Python 可能有 2 个不同的前缀。 -
@phd
find `echo $PATH | tr ':' " " -name python3`仅显示/usr/bin/python3。我猜这是因为 Ubuntu 希望用户使用 pip 安装的文件转到 /usr/local 所以它更改了前缀,但随后需要将其更改回主机,
标签: python linux setuptools setup.py