Does pip handle extras_requires from setuptools/distribute based sources?

左心房为你撑大大i 提交于 2019-12-29 18:44:14

问题


I have package "A" with a setup.py and an extras_requires line like:

extras_require = {
    'ssh':  ['paramiko'],
},

And a package "B" that depends on util:

install_requires = ['A[ssh]']

If I run python setup.py install on package B, which uses setuptools.command.easy_install under the hood, the extras_requires is correctly resolved, and paramiko is installed.

However, if I run pip /path/to/B or pip hxxp://.../b-version.tar.gz, package A is installed, but paramiko is not.

Because pip "installs from source", I'm not quite sure why this isn't working. It should be invoking the setup.py of B, then resolving & installing dependencies of both B and A.

Is this possible with pip?


回答1:


This is suppported since pip 1.1, which was released in February 2012 (one year after this question was asked).




回答2:


We use setup.py and pip to manage development dependencies for our packages, though you need a newer version of pip (we're using 1.4.1 currently).

#!/usr/bin/env python
from setuptools import setup
from myproject import __version__ 

required = [
    'gevent',
    'flask',
    ...
]

extras = {
    'develop': [
        'Fabric',
        'nose',
    ]
}

setup(
    name="my-project",
    version=__version__,
    description="My awsome project.",
    packages=[
        "my_project"
    ],
    include_package_data=True,
    zip_safe=False,
    scripts=[
        'runmyproject',
    ],
    install_requires=required,
    extras_require=extras,
)

To install the package:

$ pip install -e . # only installs "required"

To develop:

$ pip install -e .[develop] # installs develop dependencies



回答3:


The answer from @aaronfay is completely correct but it may be nice to point out that if you're using zsh that the install command pip install -e .[dev] needs to be replaced by pip install -e ".[dev]".



来源:https://stackoverflow.com/questions/4796936/does-pip-handle-extras-requires-from-setuptools-distribute-based-sources

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!