gpt4 book ai didi

python - 如何为 python 项目创建 rpm

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:28 24 4
gpt4 key购买 nike

我有一个 python 项目,它有一个 setup.py 文件。现在我可以使用 python setup.py bdist_rpm 创建 rpm。我使用 pip 安装了几个 python 依赖项。现在,当我将生成的 rpm 带到另一台机器/主机时,我收到几个与 python 包相关的错误,例如:

pkg_resources.DistributionNotFound: The 'enum34<2,>=1.0.4' distribution was not found and is required by xyz

有人知道如何解决这个问题吗?使用 bdist_rpm 是从 python 项目创建 rpm 的最佳方法吗?我应该使用其他东西来静态绑定(bind) rpm 本身中的所有依赖项吗?

编辑:添加setup.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

import codecs
import os
import re
import sys

from setuptools import find_packages
from setuptools import setup


def read(*parts):
path = os.path.join(os.path.dirname(__file__), *parts)
with codecs.open(path, encoding='utf-8') as fobj:
return fobj.read()


def find_version(*file_paths):
version_file = read(*file_paths)
version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]",
version_file, re.M)
if version_match:
return version_match.group(1)
raise RuntimeError("Unable to find version string.")


install_requires = [
'cached-property >= 1.2.0, < 2',
'docopt >= 0.6.1, < 0.7',
'PyYAML >= 3.10, < 4',
'requests >= 2.6.1, < 2.8',
'texttable >= 0.8.1, < 0.9',
'websocket-client >= 0.32.0, < 1.0',
'docker-py >= 1.8.1, < 2',
'dockerpty >= 0.4.1, < 0.5',
'six >= 1.3.0, < 2',
'jsonschema >= 2.5.1, < 3',
]


tests_require = [
'pytest',
]


if sys.version_info[:2] < (3, 4):
tests_require.append('mock >= 1.0.1')
install_requires.append('enum34 >= 1.0.4, < 2')


setup(
name='docker-compose',
version=find_version("compose", "__init__.py"),
description='Multi-container orchestration for Docker',
url='https://www.docker.com/',
author='Docker, Inc.',
license='Apache License 2.0',
packages=find_packages(exclude=['tests.*', 'tests']),
include_package_data=True,
test_suite='nose.collector',
install_requires=install_requires,
tests_require=tests_require,
entry_points="""
[console_scripts]
docker-compose=compose.cli.main:main
""",
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Console',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
],
)

最佳答案

乔丹·西塞尔的 FPM项目对于从一堆不同的源类型(包括 python)制作 RPM/DEB 非常方便。看看wiki page for python有关于此的一些说明。它也非常擅长为您处理依赖关系。

关于python - 如何为 python 项目创建 rpm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com