Python 在 virtualenv 中使用 pip install 时出现“权限被拒绝”错误

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30656046/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 08:45:54  来源:igfitidea点击:

'Permission denied' error when using pip install in virtualenv

pythonvirtualenvvirtualenvwrapper

提问by aweeeezy

Edit: FIXED!

编辑:固定!

Just had to chown the .cache directory

只需要 chown .cache 目录

I've tried the virtualenvwrapper docsinstructions, I've tried this guy's instructionsas well as these...I've tried sudo pip uninstall virtualenv, sudo pip uninstall virtualenvwrapper, sudo pip3 uninstall virtualenv, sudo pip3 uninstall virtualenvwrapperbefore attempting each set of instructions. I've looked at other SO posts like this one, but the sudo issue isn't the same as my own. By this, I mean that I don't use sudo when making the virtualenv, and if I try to use sudo to pip install a package, it'll just say that I've already installed the package (outside of the virtualenv).

我已经试过virtualenvwrapper文档说明,我已经试过这家伙的说明,以及这些......我已经试过sudo pip uninstall virtualenvsudo pip uninstall virtualenvwrappersudo pip3 uninstall virtualenvsudo pip3 uninstall virtualenvwrapper试图每个指令集之前。我看过像这样的其他 SO 帖子,但 sudo 问题与我自己的不同。我的意思是我在制作 virtualenv 时不使用 sudo,如果我尝试使用 sudo pip install 一个包,它只会说我已经安装了这个包(在 virtualenv 之外)。

I've also tried doing pip install --user virtualenv(wrapper)

我也试过做 pip install --user virtualenv(wrapper)

Here's what I did:

这是我所做的:

~ $ sudo pip3 install virtualenv
Downloading/unpacking virtualenv
  Downloading virtualenv-13.0.3-py2.py3-none-any.whl (1.7MB): 1.7MB downloaded
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...
~ $ mkdir ~/.virtualenvs
~ $ sudo pip3 install virtualenvwrapper
Downloading/unpacking virtualenvwrapper
  Downloading virtualenvwrapper-4.5.1-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): virtualenv-clone in /usr/local/lib/python3.4/dist-packages (from virtualenvwrapper)
Requirement already satisfied (use --upgrade to upgrade): stevedore in /usr/local/lib/python3.4/dist-packages (from virtualenvwrapper)
Requirement already satisfied (use --upgrade to upgrade): virtualenv in /usr/local/lib/python3.4/dist-packages (from virtualenvwrapper)
Installing collected packages: virtualenvwrapper
Successfully installed virtualenvwrapper
Cleaning up...
~ $ export WORKON_HOME=~/.virtualenvs/

Then I added these two lines to my .bashrc: (I also tried setting VIRTUALENVWRAPPER_PYTHONto /usr/bin/python)

然后我将这两行添加到我的 .bashrc 中:(我也尝试设置VIRTUALENVWRAPPER_PYTHON/usr/bin/python

source /usr/local/bin/virtualenvwrapper.sh
VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3'

Next I tried this:

接下来我尝试了这个:

~ $ mkvirtualenv test
New python executable in test/bin/python
Installing setuptools, pip, wheel...done.
(test)~ $ pip install numpy
Collecting numpy
  Using cached numpy-1.9.2.tar.gz
Building wheels for collected packages: numpy
Exception:
Traceback (most recent call last):
  File "/home/aweeeezy/.virtualenvs/test/local/lib/python2.7/site-packages/pip/basecommand.py", line 223, in main
    status = self.run(options, args)
  File "/home/aweeeezy/.virtualenvs/test/local/lib/python2.7/site-packages/pip/commands/install.py", line 291, in run
    wb.build(autobuilding=True)
  File "/home/aweeeezy/.virtualenvs/test/local/lib/python2.7/site-packages/pip/wheel.py", line 754, in build
    ensure_dir(output_dir)
  File "/home/aweeeezy/.virtualenvs/test/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 70, in ensure_dir
    os.makedirs(path)
  File "/home/aweeeezy/.virtualenvs/test/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/home/aweeeezy/.virtualenvs/test/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/home/aweeeezy/.virtualenvs/test/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/home/aweeeezy/.virtualenvs/test/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/home/aweeeezy/.cache/pip/wheels/4b'

Why can't virtualenv just work?

为什么 virtualenv 不能正常工作?

回答by mescalin

you need to change the owner of directory of pip.

您需要更改pip目录的所有者。

run chown -R <user>:<group> /home/aweeeezy/.cache/pip.

chown -R <user>:<group> /home/aweeeezy/.cache/pip

回答by Vladir Parrado Cruz

I think that if you do that pip install numpy --no-cache-dirit will work.

我认为,如果你这样做,pip install numpy --no-cache-dir它会奏效。

If you run pip --helpyou will find:

如果你运行,pip --help你会发现:

--no-cache-dir Disable the cache.

--no-cache-dir Disable the cache.

Hope that it can help to someone in the future.

希望它可以在将来对某人有所帮助。