python bdist_rpm不使用install_requires?

时间:2015-11-13 06:45:34

标签: python rpm setuptools distutils

我使用python bdist_rpm创建了一个新的RPM。通常python setup.py install会安装python依赖项,如websocket-client或任何其他包。但RPM只是拒绝安装任何东西。

显然,来自其他各个帖子的建议似乎只是在setup.cfg中要求它们作为rpm包。这对我来说没有意义,因为大多数rpm软件包似乎都是真正的旧版本,我不可能为我需要的所有python软件包创建rpms。我需要一个最近的版本,并且yum安装实际上不安装软件包是没有意义的。

什么是正确的(干净且最简单的)方法?我相信如果setup.py有类似

的内容
install_requires=[
    "validictory",
    "requests",
    "netlogger>=4.3.0",
    "netifaces",
    "pyzmq",
    "psutil",
    "docopt"
],

然后它应该尝试将它们包含在rpm中或尝试安装它。 我正在尝试一个干净的centos vm使用vagrant,我一直在破坏,然后安装rpm。

1 个答案:

答案 0 :(得分:0)

我使用的超级黑客方式是添加一个安装后脚本,其中包含easy_install安装的所有要求(而不是pip,因为旧版本可能没有pip,甚至在安装pip之后,这种方法在使用python 2.6的系统上失败了)

#Adding this in setup.py
options = {'bdist_rpm':{'post_install' : 'scripts/rpm_postinstall.sh'}},

然后脚本如下:

easy_install -U <pkgnames>

当然,如果你想要清理我也不会添加post_uninstall,因为你不知道除了这个应用程序之外使用的软件包是什么。 rpm方法的逻辑似乎是为了这个,但它诚实地过度工程,我宁愿用rpm包装所有模块,以确保它始终有效。 **为了更清洁的解决方案而大声疾呼**