python bdist_rpm 不使用 install_requires?

标签 python rpm setuptools distutils

我使用 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 虚拟机,我一直在破坏它,然后安装 rpm。

最佳答案

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

关于python bdist_rpm 不使用 install_requires?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33687249/

相关文章:

unix - 如何在 Centos 5.8 上安装 YUM

linux - 从已安装的 rpm 重新打包 rpm

mysql - 使用 rpm 安装旧版本的 mysql

python - 在 setup.py 文件中设置编译参数(或链接器参数?-lrt?)

python - "pip install --editable ./"与 "python setup.py develop"

python - Home-brew 在 Mac 上安装 OpenCV 2.4 和 OpenCV3.1?

python - 计算字典内嵌套列表中的值的数量

python - 自定义类实例复制

python - 从字符串列表中找到匹配给定字符串的最佳子集

python - 在 Mac OS X 上使用 pip 安装 pyopencv