从setup.py安装依赖项

问题描述 投票:11回答:2

我想知道是否和.deb包一样,在我的setup.py中可以配置我的包的依赖项,然后运行:

$ sudo python setup.py install

它们是自动安装的。已经研究过互联网,但我发现只是让我困惑,像“需要”,“install_requires”和“requirements.txt”这样的东西

python setuptools install-requires
2个回答
4
投票

只需在lib文件夹中创建requirements.txt并编写所有依赖项,如下所示:

gunicorn
docutils>=0.3
lxml==0.5a7

然后创建一个setup.py脚本并阅读requirements.txt

import os
thelibFolder = os.path.dirname(os.path.realpath(__file__))
requirementPath = thelibFolder + '/requirements.txt'
install_requires = [] # Examples: ["gunicorn", "docutils>=0.3", "lxml==0.5a7"]
if os.path.isfile(requirementPath):
    with open(requirementPath) as f:
        install_requires = f.read().splitlines()
setup(name="yourpackage", install_requires=install_requires, [...])

python setup.py install的执行将安装您的包和所有依赖项。就像@jwodder所说,创建一个requirements.txt文件并不是必须的,你可以直接在install_requires脚本中设置setup.py。但是写一个requirements.txt文件是一个很好的做法。

在设置功能中,您还必须设置versionpackagesauthor等,阅读文档以获取完整示例:https://docs.python.org/3.7/distutils/setupscript.html

你的包dir会是这样的:

├── yourpackage
│   ├── yourpackage
│   │   ├── __init__.py
│   │   └── yourmodule.py
│   ├── requirements.txt
│   └── setup.py

3
投票

另一种可能的解决

try:
    # for pip >= 10
    from pip._internal.req import parse_requirements
except ImportError:
    # for pip <= 9.0.3
    from pip.req import parse_requirements

def load_requirements(fname):
    reqs = parse_requirements(fname, session="test")
    return [str(ir.req) for ir in reqs]

setup(name="yourpackage", install_requires=load_requirements("requirements.txt"))

© www.soinside.com 2019 - 2024. All rights reserved.