【发布时间】: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