跳转到主要内容

用于在virtualenvs中使用的Shim RPM模块。

项目描述

rpm-shim

用于在虚拟环境中使用的Python RPM Shim模块。

目的

RPM Python绑定与系统RPM安装相关联,并且作为Python包(在PyPI或其他地方)不可用。此Shim模块使能够在虚拟环境中导入和使用绑定。

在虚拟环境之外的裸系统上安装此Shim模块没有意义。它仍然可以工作,但没有好处。如果您无论如何都要这样做,请注意不要覆盖已安装的RPM Python绑定。

示例

以下是一个如何使用此模块在新创建的虚拟环境中启用RPM Python绑定的场景。首先在主机系统上运行命令。

# make sure RPM Python bindings are installed and functional
$ rpm -q python3-rpm
python3-rpm-4.18.0-1.fc37.x86_64

$ pip list
Package    Version
---------- -------
rpm        4.18.0

$ python -c "import rpm; print(rpm.__version__)"
4.18.0

# let's create a virtualenv
$ python -m venv env
$ source env/bin/activate

# the bindings are not accessible there
(env) $ python -c "import rpm; print(rpm.__version__)"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'rpm'

# install the shim module from PyPI
(env) $ pip install rpm
...
Successfully installed rpm-0.1.0

# now we can import the bindings
(env) $ python -c "import rpm; print(rpm.__version__)"
4.18.0

使用与系统Python版本不同的Python版本使用RPM绑定

在许多系统上,Shim模块将能够找到系统安装的RPM绑定,即使您使用的是不同的Python版本(例如,Fedora 38默认附带Python 3.11,但Shim模块也可以在Python 3.10虚拟环境中工作)。

在某些发行版(尤其是Debian/Ubuntu)上,它将无法工作并引发ModuleNotFoundError: No module named 'rpm._rpm'。这是因为这些发行版在_rpm.so文件名中编码了Python版本:_rpm.cpython-38-x86_64-linux-gnu.so

您可以通过创建指向通用_rpm.so名称的符号链接,使Shim模块在这样系统上工作。

for file in /usr/lib/python3/dist-packages/rpm/_rpm*.cpython-*.so; do
  sudo ln -s ${file} $(echo ${file} | sed 's/\.cpython[^.]*//');
done

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

rpm-0.2.0.tar.gz (10.3 kB 查看散列)

上传时间

构建分发

rpm-0.2.0-py3-none-any.whl (4.4 kB 查看散列)

上传时间 Python 3

由以下机构支持