假设我想在 Debian/Devuan 系统上安装一个 Python 包系统。某些 PyPI 软件包具有可通过存储库的 apt 源获取的 DEB 软件包,软件包名称前缀为python3-
(或python-
,取决于 Debian 版本)。但是——并非所有人都这样做。现在,我总是可以推出自己的 DEB 包,但是 - 我如何知道我感兴趣的包是否是:
- 实际上失踪了;
- 可用,但使用另一个名称(较短的形式、较长的形式、传统名称现在在 PyPI 等上更改);或者
- 可用,但与其他 PyPI 包捆绑在一起
?是否有一个简单的映射规则,或者我可以在某个地方使用 PyPI 包名称进行查询并获取 apt 包名称?
查找与给定 Python 包匹配的 Debian 包的最可靠方法是了解应如何导入后者。例如导入pandasql
from pandasql
;如果它在 Debian 软件包中可用,它将发布/usr/lib/python3/dist-packages/pandasql
.要确定此类软件包是否存在,请安装
apt-file
(如果尚不存在),并询问:如果包存在,
apt-file
会告诉你它的名字;如果没有找到任何内容,则该包不存在。在大多数情况下,Python 二进制包应反映其模块名称,但有一些注意事项:
诚实的答案是,您必须做出有根据的猜测或查找其中的文件。
apt search …
(“有根据的猜测”确实包括使用 pypi 包名称等操作)检查其中的文件:老实说,我只是进行 venv 安装,然后让它显示包含的文件。然后,选择一个看起来很重要、必然存在且足够独特的特定文件,并询问 Debian 打包基础设施哪个包包含这样命名的文件。例如,对于
sigmf
包:从最后一个命令给我的文件列表中,我选择
sigmf/sigmffile.py
. 听起来如果没有该文件,包就不会完整,而且也不是我在其他地方遇到的文件名。(您现在可以
rm -rf temporary_venv
关闭该终端。没有触及任何其他内容。)所以,
这不会产生任何结果,因此没有包含 sigmf 的包。