python - pip 是否处理来自 setuptools/distribute 来源的 extras_requires?

标签 python setuptools pip distribute

我有一个带有 setup.py 和 extras_requires 的包“A”行如:

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

还有一个依赖于 util 的包“B”:

install_requires = ['A[ssh]']

如果我在包 B 上运行 python setup.py install,它在后台使用 setuptools.command.easy_install,则 extras_requires 是正确解析,并且安装了 paramiko。

但是,如果我运行 pip/path/to/Bpip hxxp://.../b-version.tar.gz,包 A 是已安装,但 paramiko 未安装。

因为 pip “从源代码安装”,我不太确定为什么这不起作用。它应该调用 B 的 setup.py,然后解析和安装 B 和 A 的依赖项。

pip 可以做到这一 pip 吗?

最佳答案

我们使用 setup.pypip 来管理我们包的开发依赖项,尽管您需要更新版本的 pip(我们目前正在使用 1.4.1)。

#!/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,
)

安装包:

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

开发:

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

关于python - pip 是否处理来自 setuptools/distribute 来源的 extras_requires?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796936/

相关文章:

python - Pandas html : Don't truncate long values

python - 为什么我无法安装 pyenv?

python - 从 python 内部调用 python 脚本

python - 在模型序列化器中获取当前用户

python - 属性错误: 'NoneType' object has no attribute 'traverse'

python - 在 setup.cfg 中查找问题 |路径中看不到模块

python - pip 安装依赖链接

python-3.x - Python setuptools package_data - pip 在子文件夹上失败

python - 混淆用户本地的 Python 安装(virtualenv、pip、distribute)

python - 如何在 jupyter 笔记本上制作嵌套的 tqdm 栏