【问题标题】:pip -r error at in bash scriptbash脚本中的pip -r错误
【发布时间】:2016-02-14 16:33:55
【问题描述】:
#!/bin/bash -e
pip install -r requirements.txt

当我执行上述脚本时,我收到以下错误消息;

 Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 257, in run
    InstallRequirement.from_line(name, None))
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 173, in from_line
    return cls(req, comes_from, url=url, prereleases=prereleases)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 71, in __init__
    req = pkg_resources.Requirement.parse(req)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2667, in parse
    reqs = list(parse_requirements(s))
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2593, in parse_requirements
    raise ValueError("Missing distribution spec", line)
ValueError: ('Missing distribution spec', '\xe2\x80\x93r')

Storing debug log for failure in /home/user/.pip/pip.log

但是如果我执行

pip install –r  requirements.txt

直接通过 bash,它工作正常。可能是什么原因?

下面是我的python和pip版本;

user@ubuntu:~$ python -V
Python 2.7.6
user@ubuntu:~$ pip -V
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
user@ubuntu:~$

【问题讨论】:

  • requirements.txtenv_requirements.txt 中的内容是什么?
  • 在脚本的执行环境中可以访问requirements.txt,特别是在当前目录或$PATH
  • 很抱歉造成混乱。我已经更新了问题。 “requirements.txt”被用于这两个命令。我已将文件“requirements.txt”与脚本放在同一目录中,但它仍然无法正常工作
  • 你需要shebang中的-e吗?

标签: python bash pip python-2.x


【解决方案1】:
\xe2\x80\x93

这是一个 UTF-8 编码的en dash。请务必使用通常的 (ASCII) dash

换句话说,替换这个:

pip install –r requirements.txt

用这个:

pip install -r requirements.txt

【讨论】:

  • 非常感谢。它解决了我的问题。我猜它正在发生,因为我从其他地方复制了它。
最近更新 更多