gpt4 book ai didi

python - Setuptools "development"要求

转载 作者:IT老高 更新时间:2023-10-28 21:44:34 24 4
gpt4 key购买 nike

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/

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