【问题标题】:How to install python module extras with pip requirements.txt file如何使用 pip requirements.txt 文件安装 python 模块附加功能
【发布时间】:2016-07-29 04:53:03
【问题描述】:

pip requirements.txt documentation 表示可以使用类似这样的行安装附加功能

MyPackage==3.0 [PDF]

所以在我的 requirements.txt 文件中有一行内容如下:

requests==2.9.1 [security]

但是当我运行命令时,而不是为请求模块安装安全附加功能:

pip install -r requirements.txt

我收到一条错误消息,提示我的文件格式不正确:

Invalid requirement: 'requests==2.9.1 [security]'
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 77, in __init__
    req = pkg_resources.Requirement.parse(req)
  File "/Library/Python/2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3036, in parse
    req, = parse_requirements(s)
  File "/Library/Python/2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2980, in parse_requirements
    "version spec")
  File "/Library/Python/2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2956, in scan_list
    raise RequirementParseError(msg, line, "at", line[p:])
RequirementParseError: Expected ',' or end-of-list in requests==2.9.1 [security] at  [security]

有人知道我做错了什么吗?

【问题讨论】:

  • 删除 [security] 我认为它不应该存在...您的 requirements.txt 包也不应该手动完成,而是通过运行 pip freeze > requirements.txt
  • 显示完整的 requirements.txt 文件;其他地方可能有错误。
  • 并显示您的setup.py 文件。通过链接建议您还需要在设置中定义您的附加功能。

标签: python pip requirements.txt


【解决方案1】:

正确的语法是:

requests[security] == 2.9.1 

链接的文档似乎适用于pip v1.1,而最新的稳定版本是 v8.1。 latest docs for pip are here,但您必须单击更多链接才能访问 formatting specs for requirements (PEP 0508)

【讨论】:

  • 当我尝试这个时,我得到了很多错误,比如Collecting pytest-cov[tests] ... WARNING: pytest-cov 2.10.0 does not provide the extra 'tests'Collecting numba[fast]<0.47 ... WARNING: numba 0.46.0 does not provide the extra 'fast'"
  • @endolith 要求文件不支持通过父包的额外功能过滤依赖项(有一个 extra 环境标记,但我不确定它是否被使用)。这里的语法是依赖于一个包包括指定的额外功能。所以numba[fast] 将是“我依赖于启用“快速”的 numba”而不是“如果启用了快速,我依赖于 numba”。
猜你喜欢
  • 2020-11-01
  • 2022-06-08
  • 2019-11-09
  • 2018-06-19
  • 1970-01-01
  • 2014-11-09
  • 2016-01-30
  • 2015-03-25
相关资源
最近更新 更多