我有一个带有 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/B
或 pip hxxp://.../b-version.tar.gz
,包 A 是已安装,但 paramiko 未安装。
因为 pip “从源代码安装”,我不太确定为什么这不起作用。它应该调用 B 的 setup.py,然后解析和安装 B 和 A 的依赖项。
pip 可以做到这一 pip 吗?
最佳答案
我们使用 setup.py
和 pip
来管理我们包的开发依赖项,尽管您需要更新版本的 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/