python - virtualenv 中的 pip 命令被系统 pip 命令忽略

标签 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 中。

我检查了 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/

相关文章:

python - 如何计算OCR系统的置信度得分?

python - "if"和 "if not"之间的性能或风格差异?

linux - 从 rhel 中的输出中去除文本

linux - 删除每行末尾的 ';'

ios - 如何知道用户点击了 TextView 的哪一行

Python 脚本失败,出现 ('Connection aborted.' , ConnectionResetError(104, 'Connection reset by peer' ))

python - "The view didn' t 返回一个 HttpResponse 对象”

linux - 如何在 Linux 命令行中将多个输入指定为单个输入?

macos - 如何在 OS X Yosemite 中开发状态栏应用程序?

macos - Mac 监听事件 : Copy to Pasteboard