virtualenv中的pip命令被忽略,支持system pip命令

时间:2017-05-15 12:27:09

标签: python linux macos virtualenv

我创建了一个virtualenv并激活了它。但是,当我运行pip -V时,我得到了这个输出:

pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

其中一个症状是我用pip安装的软件包放在/usr/local/lib/python2.7/site-packages而不是virtualenv中。

我检查了" shebang"在virtualenv中的bin/pip脚本中的行,它指向virtualenv中的python解释器,就像它应该的那样。

which pip给出了这个输出:

/home/alastair/Geekery/Courses/IT Masters/Configuration Management/venv-course/bin/pip

1 个答案:

答案 0 :(得分:0)

当我尝试运行venv-course/bin/pip -V时,我得到了这个输出:

venv-course/bin/pip: Command not found.

然而,该文件存在且可执行。根据我的经验,只有当Linux,MacOS等无法解释脚本开头的shebang行时才会发生这种情况,因此声明它不可用。

原来问题是我的目录名称中的空格,这意味着shebang行是这样的:

#!"/home/alastair/Geekery/Courses/IT Masters/Configuration Management/venv-course/bin/python2"

至少在Linux上,在指定脚本解释器的名称时,引号和空格不可用。

我尝试按照以下方式编辑shebang行,但它仍然没有工作(不,领先的空间不是问题):

#! /home/alastair/Geekery/Courses/IT\ Masters/Configuration\ Management/venv-course/bin/python2

解决方案

当我重命名路径中的目录以获得下划线然后重新创建virtualenv时,shebang行是这样的:

#!/home/alastair/Geekery/Courses/IT_Masters/Configuration_Management/venv-course/bin/python2

这一次,当我跑pip -V时,我得到了这个输出:

pip 1.5.6 from /home/alastair/Geekery/Courses/IT_Masters/Configuration_Management/venv-course/local/lib/python2.7/site-packages (python 2.7)