【问题标题】:pip fails in my python virtual environmentspip 在我的 python 虚拟环境中失败
【发布时间】:2020-09-11 20:01:22
【问题描述】:

尝试学习本教程:https://docs.python.org/3/tutorial/venv.html

$ python3 -m venv tutorial-env

$ source tutorial-env/bin/activate

到目前为止一切都很好,但是:

(tutorial-env) $ pip --version
import: not authorized `re' @ error/constitute.c/WriteImage/1028.
import: not authorized `sys' @ error/constitute.c/WriteImage/1028.
from: can't read /var/mail/pip
~/src/examples/tutorial-env/bin/pip: line 10: syntax error near unexpected token `('
~/src/examples/tutorial-env/bin/pip: line 10: `    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])'

告诉我我的 python 安装一定有问题。我认为这应该有效。

关于我的系统安装的一些信息,以及用于创建该 tutorial-env 环境的软件版本:

(tutorial-env) $ deactivate

$ which python3 && python3 --version
/usr/bin/python3
Python 3.5.2

$ python3 -m pip --version
pip 20.2.3 from ~/.local/lib/python3.5/site-packages/pip (python 3.5)

这对我来说似乎不对。也许问题的根源在于/usr/bin/python3 -m pip 使用~/.local/lib 下的依赖项,而我原本希望它依赖于/usr/local/lib/python3.5/dist-packages/pip。我不完全确定这是根本原因,也许我只是不知道如何启动虚拟环境。

更新:仔细看,我发现/usr/local/lib/python3.5/dist-packages 不包含 pip 文件夹,而相比之下 /usr/local/lib/python2.7/dist-packages 包含。也许这就是根本原因。不过我已经通过apt-get install 安装了python3-pip。

【问题讨论】:

  • 由于某种原因,您的 pip 脚本中的 shebang 是 shell 而不是 Python。它将导入语句评估为ImageMagick commands。建议完全删除并重新创建 venv。
  • 你可能是对的,我必须编辑哪个文件来解决这个问题并不明显。 head -1 $(which pip) 打印 #!/usr/bin/python
  • 是的,那里有些不对劲。 shebang 应该是#!/path/to/tutorial-env/bin/python3。你的操作系统/平台和外壳是什么?
  • 哦,我在主机上运行了这个。这是在 tutorial-env 中运行的结果:#!/path/to/tutorial-env/bin/python3,正如您所期望的那样。
  • 是的,它会打印出pip 8.1.1 from /path/to/tutorial-env/lib/python3.5/site-packages (python 3.5)。现在太神奇了,为什么 pip -version 不工作,而 python3 -m pip --version 工作?

标签: python virtualenv


【解决方案1】:

尝试按顺序重新安装 python 和虚拟环境

【讨论】:

  • 我无法卸载 python3,它在 /usr/bin 下,如果你删除系统范围的 python,我相信 Ubuntu 会崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 2020-02-25
  • 2023-01-20
  • 2012-07-24
  • 2021-12-10
  • 2021-09-26
相关资源
最近更新 更多