我创建了一个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
答案 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)