我使用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。
答案 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包装所有模块,以确保它始终有效。 **为了更清洁的解决方案而大声疾呼**