python - Setuptools "development"要求

标签 python setuptools requirements

TL;DR:在运行 python setup.py develop 时,有没有办法 Hook setuptool 的“开发”来安装一组开发需求?

我正在使用 setuptools 构建我的第一个 python 包。我将要求指定为:

requirements = [
    'click',
    'ansible',
    'fabric',
    'gitpython',
    'pyyaml',
    'jinja2',
    'yapsy'
]

test_requirements = [
    'pytest',
    'pytest-pep8',
    'pytest-cov',
]

setup(
...
    install_requires=requirements,
    tests_require=test_requirements,
...
)

在开发过程中,我一直在安装包(在虚拟环境中):

python setup.py develop

并通过以下方式卸载:

python setup.py develop -u

该包使用 entry_points 来安装一些命令行脚本,因此这将为我设置命令并允许我在测试命令的同时编辑包。

我还有一些用于开发的依赖项...... sphinx + 扩展和其他一些东西(使用包不需要的东西)。我现在只是在虚拟环境中手动安装它们。我没有看到任何关于如何使用 setuptools 连接它们的文档(也没有在谷歌上找到任何示例)。

也许有一种方法可以 Hook “setup.py develop”以安装一组额外的要求?另一种我没有读过的方法?

最佳答案

有关使用 setup.pyrequirements.txt 的更多信息,我找到了 this article有帮助。

更新:2016 年 9 月

我不再使用 requirements.txt(请参阅下面的原始答案)来安装仅开发包。普遍的看法似乎是应该使用 requirements.txt 将部署固定到特定的版本号,通常使用 pip freeze > requirements.txt。这可确保在所有服务器上安装完全相同版本的项目依赖项以及项目依赖项的依赖项。

我改为使用 extras_require 选项来 setup

requirements = [
    'click',
    'ansible',
    'fabric',
    'gitpython',
    'pyyaml',
    'jinja2',
    'yapsy'
]

setup({
    install_requires=requirements,
    extras_require={
        'dev': [
            'pytest',
            'pytest-pep8',
            'pytest-cov'
        ]
    }
})

现在,要安装用于开发的软件包,请运行 pip install -e .[dev]。这将安装所有常规必需的软件包那些在 extras_requiredev 部分中列出的软件包。

生产安装仍然可以使用 python setup.py installpip install .(或使用 requirements.txt 文件)完成。

原答案

这是一种 方法,它似乎符合我遇到的关于 setup.pyrequirements.txt< 的建议。在 setup.pyinstall_requires 参数中指定所有生产依赖项。

requirements = [
    'click',
    'ansible',
    'fabric',
    'gitpython',
    'pyyaml',
    'jinja2',
    'yapsy'
]

setup({
    # ...
    install_requires=requirements
    # ...
})

然后创建一个 requirements.txt 文件,指示 pip 从 setup.py 安装您的生产依赖项以及您的测试依赖项。

-e .

pytest
pytest-pep8
pytest-cov

现在您可以使用 pip install -r requirements.txt 安装您的开发包。 -e . 行将在开发模式下从 setup.py 安装您的包及其依赖项。要在生产环境中安装,您可以使用 python setup.py installpip install .。这只会安装 setup.py 中列出的依赖项。

关于python - Setuptools "development"要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28509965/

相关文章:

iOS 前置摄像头专用应用

project-management - 如何向同事证明用例很重要?

python - pandas df 中的多重逻辑比较

python - 即使未找到匹配项,Pandas itertuples 第一行也会返回 true

python - 如何使用setuptools安装到自定义目录?

Python包设置脚本安装二进制可执行文件

python - Python Bot 的基本计算机视觉技术。

python - 连接到domain.com Mysql数据库

setuptools - readthedocs和setuptools scm版本错误

c++ - MFC 应用程序中的 RSS 提要和程序更新