从setup.py安装依赖项

时间:2014-11-13 02:27:45

标签: python setuptools install-requires

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

$ sudo python setup.py install

它们会自动安装。已经研究过互联网,但我发现只是让我感到困惑,比如“需要”,“install_requires”和“requirements.txt”

2 个答案:

答案 0 :(得分:2)

只需在您的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

您的软件包目录将如下所示:

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

答案 1 :(得分:2)

另一种可能的解决方案

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"))