首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Setuptools“开发”需求

Setuptools“开发”需求
EN

Stack Overflow用户
提问于 2015-02-14 06:39:34
回答 1查看 23.4K关注 0票数 76

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

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

代码语言:javascript
复制
requirements = [
    'click',
    'ansible',
    'fabric',
    'gitpython',
    'pyyaml',
    'jinja2',
    'yapsy'
]

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

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

在开发过程中,我一直在使用以下命令安装软件包(在虚拟环境中):

代码语言:javascript
复制
python setup.py develop

并使用以下命令进行卸载:

代码语言:javascript
复制
python setup.py develop -u

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

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

也许有一种方法可以让'setup.py develop‘安装一组额外的需求?另一种我没读过的方法?

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 05:57:44

有关使用setup.pyrequirements.txt的更多信息,我发现this article很有帮助。

更新: 2016年9月

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

我转而使用setupextras_require选项。

代码语言:javascript
复制
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参数中指定所有生产依赖项。

代码语言:javascript
复制
requirements = [
    'click',
    'ansible',
    'fabric',
    'gitpython',
    'pyyaml',
    'jinja2',
    'yapsy'
]

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

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

代码语言:javascript
复制
-e .

pytest
pytest-pep8
pytest-cov

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

票数 132
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28509965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档