如何在整个系统内包含本地构建的 Python 包?

如何在整个系统内包含本地构建的 Python 包?

例如:我numpy使用 Intel MKL 库进行构建,并且它在 Python shell 中可用,但如果我想从依赖于的存储库中安装一些包numpy,则不会考虑我的构建。

在 Ubuntu 中包含我的 Python 构建包的最简单方法是什么,以便存储库中的包可以找到它,最好无需再次构建?

答案1

使用检查安装构建一个 deb 文件并安装它。

Checkinstall 将取代标准编译中的“make install”部分。它不会只是将文件复制到目标目录,而是会构建并安装 deb 文件。

如果您无法使用 checkinstall,则可以使用 equivs 创建虚拟包。请注意,这可能会在更新或卸载时产生问题,因此仅建议专家用户使用。众所周知,它有失控的趋势,因此请谨慎使用。

安装 equivs:

sudo apt-get install equivs

创建控制文件:

equivs-control python-numpy

这将创建一个名为 python-numpy 的模板控制文件(名称无关紧要)编辑它 python-numpy 使其看起来像这样:

### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source: <source package name; defaults to package name>
Section: misc
Priority: optional
# Homepage: <enter URL here; no default>
Standards-Version: 3.9.2

Package: python-numpy
Version: 9.9
# Maintainer: Your Name <[email protected]>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
# Files: <pair of space-separated paths; First is file to include, second is destination>
#  <more pairs, if there's more than one file to include. Notice the starting space>
Description: <short description; defaults to some wise words> 
 long description and info
 .
 second paragraph

您提供的数据越多,deb 的效果就越好。我只修改了 2 个字段:

  • 包:要构建的包的名称。对于肮脏的解决方案,请使用 python-pynum
  • 版本:使用足够大的数字以防止 apt-get 更新它。

一个更好的(但我没有测试过的)解决方案可能是创建一个不同的包名称,链接 python-pynum-dummy,并在 Provides 行中使用 put python-numpy。这应该更干净。

最后构建 deb。

equivs-build python-numpy 

并安装它。

相关内容