【问题标题】:python bdist_rpm not using install_requires?python bdist_rpm 不使用 install_requires?
【发布时间】:2015-11-13 06:45:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python rpm setuptools distutils


    【解决方案1】:

    我使用的超级破解方法是添加一个安装后脚本,其中包含所有要求作为 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 打包所有模块以确保它始终有效。 ** 大声疾呼寻求更清洁的解决方案 **

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 2012-04-28
      • 2023-03-28
      • 2015-08-21
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多