Pip especifica um erro no Ubuntu 16.04. E, pacotes venv aparecem quando o ambiente é desativado

1

Isso é idêntico a essa pergunta, mas o título está incorreto. E os sintomas são mais odiosos do que os explicados neste post .

De um upgrade do Ubuntu 14.04 para o 16.04 - o Pip mostra pacotes instalados em um ambiente virtual ativo, mesmo quando o dispositivo está desativado.

Além disso, ao instalar um pacote, o pip gera este erro:

The directory '/home/user/.cache/pip/http' or its parent directory is
not owned by the current user and the cache has been disabled. Please
check the permissions and owner of that directory. If executing pip
with sudo, you may want sudo's -H flag. The directory
'/home/user/.cache/pip' or its parent directory is not owned by the
current user and caching wheels has been disabled. check the
permissions and owner of that directory. If executing pip with sudo,
you may want sudo's -H flag.  

Também recebo um erro de permissão ao fazer pip install <package_name> , posso contornar isso com pip install --user <package_name> . E o sudo só funcionará como acima com a opção -H .

Qualquer informação ou uma possível correção desse erro seria ótima! Desde já, obrigado!

Ed

    
por edlee 25.10.2016 / 22:59

1 resposta

0

Encontrei a resposta para o problema. Isso ocorre porque o Virtualenv é instalado com o sudo e o arquivo pip / .cache é de propriedade do usuário. Existem alguns pacotes que requerem acesso ao sudo. Abaixo está a informação sobre o problema e referência. Eu adicionei um guia idiotas abaixo da explicação para este erro.

  1. Quando pacotes instalados globalmente estão no caminho do python e entram em conflito com os requisitos de instalação, eles são ignorados e não são desinstalados.
  2. Quando pacotes instalados globalmente estão no caminho do python e satisfazem os requisitos de instalação, o pip não faz nada e relata que esse requisito é satisfeito (semelhante a como os pacotes globais podem satisfazer os requisitos ao instalar pacotes em um site -system- pacotes virtualenv).
  3. O
  4. pip não executará uma instalação --user em um --no-site-packages virtualenv (ou seja, o tipo padrão de virtualenv), devido ao site do usuário não estar no caminho do python. A instalação seria inútil.
  5. Em um --system-site-packages virtualenv, o pip não instalará um pacote que entre em conflito com um pacote nos pacotes do site virtualenv. A instalação do --user não teria precedência sys.path e seria inútil.

Mais informações podem ser lidas aqui link .

Minha correção

  1. Removeu todos os pacotes do projeto em ~ / user / .cache. Qual onde foi instalado 'erroneamente' pip uninstall -r <path_to_project_requirements.txt> (prefixo N.B com sudo quando requerido).

  2. Removido virtualenv sudo pip uninstall virtualenv

  3. Instale o virtualenv usando: pip --user install virtualenv . Qual vai parar os problemas de propriedade. E, salve-o de ter que instalá-lo globalmente com o sudo - você também pode usar o wrapper virtualenv que provavelmente pouparia um pouco dessa dor, mas eu não sou ...

  4. Crie seu diretório de projeto: mkdir <project> e entre nele cd project .

  5. virtualenv venv crie sua pasta de ambiente local para instalar seus pacotes em . venv/bin/activate

  6. continue a instalação dos requisitos do seu projeto.

por edlee 05.11.2016 / 00:39