Permissão negada: '/usr/local/lib/python2.7/dist-packages/pytz-2017.2.dist-info'

4

Eu tentei instalar o Django com pip install Django==1.11.4 mas eu enfrento esse erro o tempo todo:

Exception:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run
prefix=options.prefix_path,
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 784, in install
**kwargs
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 345, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 316, in clobber
ensure_dir(destdir)
File "/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py", line 83, in ensure_dir
os.makedirs(path)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/pytz-2017.2.dist-info'
    
por Mr H 23.08.2017 / 20:21

3 respostas

3

Por padrão, o pip é instalado em /usr/local , que precisa de permissões sudo. Em vez disso, sempre que você estiver trabalhando com módulos Python, use virtualenv. É muito fácil:

  1. Instalar globalmente o Python virtualenv

    sudo pip install virtualenv
    
  2. Crie um virtualenv

    virtualenv Venv
    
  3. Ative seu virtualenv

    source Venv/bin/activate
    
  4. Instale o Django localmente no virtualenv

    pip install django
    

Dessa forma, você não precisa se preocupar em modificar módulos globais do Python e é muito mais seguro.

    
por Sanchit 23.08.2017 / 21:20
3

@ A resposta de Sanchit é correta. O ambiente virtual é o caminho a percorrer se você gerencia diferentes projetos em sua máquina e não deseja que dependências de um projeto interfiram no outro.

Caso você deseje instalar um pacote em seu sistema com o pip instalado localmente sem um ambiente virtual enquanto estiver recebendo um erro de permissão negada, tente instalar o pacote apenas para o usuário atual. Isso pode ser feito anexando o --user flag ao seu comando pip install .

Por exemplo:

pip install Django==1.11.4 --user

Além disso, eu não instalaria pip packages usando sudo permissões por dois motivos:

  1. O SUDO pode não estar disponível para todos os usuários.

  2. * O SUDO parece instalar pacotes apenas para o usuário root e não para o usuário atual (pelo menos no meu caso - Ubuntu 16.04, OpenStack Cloud Instance)

* Pode não se aplicar a você. Eu achei difícil reproduzir.

    
por Arun Das 13.02.2018 / 20:48
2

O Pip está tentando instalá-lo na pasta / usr / local, que requer permissão de administrador. Se você é administrador e quer instalá-lo, execute o mesmo comando com o sudo:

sudo pip install Django==1.11.4

Ele pedirá sua senha e isso deve ser isso.

edit: você também pode usar a opção --user do pip, mas ela estará disponível apenas para o usuário atual.

    
por breheme 23.08.2017 / 20:55