【问题标题】:Pip does not install in virtualenvPip 未安装在 virtualenv 中
【发布时间】:2019-02-03 14:46:09
【问题描述】:

我已经安装了没有系统包的 pip。

which pip
/home/pdaly/envs/py3/bin/pip

which python
/home/pdaly/envs/py3/bin/python

当我在 virtualenv 中通过 pip 安装时,它似乎使用系统 pip 而不是虚拟 env pip,尽管 pip 指向 env。我收到以下错误

PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/pandas-0.23.4.dist-info'

我该如何解决这个问题?

注意:有20-30人都在使用本机直接安装包到系统python...

(py3) pdaly@gpu01:~$ /home/pdaly/envs/py3/bin/python -c "import os, sys; print(os.linesep.join(sys.path))"
/home/pdaly/<private repo 1>/lib
/home/pdaly/<private repo 2>
/home/pdaly/<private repo 3>
/home/pdaly/envs/py3/lib/python35.zip
/home/pdaly/envs/py3/lib/python3.5
/home/pdaly/envs/py3/lib/python3.5/plat-x86_64-linux-gnu
/home/pdaly/envs/py3/lib/python3.5/lib-dynload
/usr/lib/python3.5
/usr/lib/python3.5/plat-x86_64-linux-gnu
/home/pdaly/envs/py3/lib/python3.5/site-packages

(py3) pdaly@gpu01:~$ echo $PYTHONPATH
/home/pdaly/<private repo 1>/lib/:/home/pdaly/<private repo 2>/:/home/pdaly/<private repo 3>/

【问题讨论】:

  • 您正在运行哪些产生 PermissionError 的命令?
  • pip 从环境中安装熊猫
  • 我猜你在调用 pip 之前确实激活了 venv,但请注意它正在尝试安装在 python2.7 dist lib 上,但你有一个用于 python3 的 venv。
  • @isydmr 这只是一个无用的答案;他不想安装在系统上,而是安装在这个 venv 上。
  • 您可以运行/home/pdaly/envs/py3/bin/python -c "import os, sys; print(os.linesep.join(sys.path))" 并将输出添加到问题中吗?还要检查您是否设置了PYTHONPATH env var:echo $PYTHONPATH

标签: python linux pip


【解决方案1】:

正如其中一个 cmets 所述(赞 @mydaemon),您正在使用的 venv 是一个 python3 环境,它与 python2 库/脚本不兼容。另外,如果你没有激活你的环境,那么任何python脚本/工具都将继续在系统python上运行(在这种情况下看起来像python2.7)。

要让它像 python3 一样工作,只需:编辑:新信息表明这个环境确实是一个激活的 python3 环境,所以这不起作用)。

. ${HOME}/envs/py3/bin/activate
pip install panda

使用python2:

virtualenv --python=python2.7 ${HOME}/envs/py2
. ${HOME}/envs/py2/bin/activate
pip install panda

编辑Pandas on PyPi 是一个 python 2.x 库,不适用于 python3 上的 pip。 Pandas website 建议通过anaconda 安装

【讨论】:

  • 如果他使用 Python 3,不应该是 pip3 install pandas 而不是 pip install pandas 吗?
  • 在上面的 cmets 中,我说过我从客户端运行 pip install,就像您在上面键入的那样。 PermissionError 是我运行它时收到的。
  • @Alexis.Rolland @pmdaly:当 python3 环境被激活时,pip 命令只是pip3 的别名......它引用了安装在环境中的脚本。这就是为什么您看到两个命令的错误完全相同的原因。