将Python模块安装到兼容所有版本的位置
我创建了一个包含Python模块的Debian包。现在遇到的问题是
dpkg-deb -c python-mymodule_1.0_i386.deb
这意味着所有文件都会安装在
/usr/lib/python2.6/dist-packages/mymodule*
这就导致了一个问题:安装我这个deb包的用户必须使用和我完全相同版本的Python,但我知道我的模块在更新版本上也能正常工作。
在我的Makefile里,我有以下这个目标:
install:
python setup.py install --root $(DESTDIR) $(COMPILE) --install-layout=deb
其中setup.py是
from distutils.core import setup
setup(name='mymodule',
version='1.0',
description='does my stuff',
author='Me',
author_email='myemail@localhost',
url='http://myurl/',
packages=['mymodule'],
)
请问有没有办法让我修改setup.py文件或者Makefile,这样生成的模块可以安装在一个与Python版本无关的目录,而不是/usr/lib/python2.6?
谢谢,
亚历克斯
1 个回答
0
我想我现在找到了答案(多亏了Tshepang的提示):
在debian/rules文件中,你需要调用dh_pysupport。
这个命令会把在构建机器上通过setup.py安装的所有文件抓取到
$(DESTDIR)/usr/lib/pythonX.Y/dist-packages/mymodule*
并将它们放到.deb文件中一个与Python版本无关的位置,也就是
/usr/share/pyshared/mymodule*
最后,它会在postinst脚本中添加一个调用update-python-modules的命令,这样可以确保这个模块在目标机器上每个版本的Python中都能使用。