我已经创建了一个 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 中。
我检查了 virtualenv 中 bin/pip
脚本中的“shebang”行,它像它应该的那样指向 virtualenv 中的 python 解释器。
which pip
给出了这个输出:
/home/alastair/Geekery/Courses/IT Masters/Configuration Management/venv-course/bin/pip
最佳答案
当我尝试运行 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)
关于python - virtualenv 中的 pip 命令被系统 pip 命令忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43979550/