Como faço para instalar um pacote pip globalmente em vez de localmente?

101

Estou tentando instalar o pacote flake8 usando pip3 e parece que ele se recusa a instalar porque já está instalado em um local.

Como posso forçar a instalação global (nível do sistema)?

pip3 install flake8
Requirement already satisfied (use --upgrade to upgrade): flake8 in ./.local/lib/python3.4/site-packages

Por favor, note que eu preferiria uma solução genérica (que deve funcionar no Debian, OS X talvez até Windows), uma que deve ser usada em qualquer plataforma, então não quero especificar o destino sozinho.

Por alguma razão estranha, ele se comporta como se eu já --usertivesse especificado o que, no meu caso, não fiz.

A única maneira de instalar um pacote globalmente foi removendo-o primeiro e instalando-o novamente depois disso. De alguma forma, parece que pip (8.1.1) se recusa a instalar um pacote globalmente se ele existir localmente.

Aviso: Nenhum ambiente virtual foi usado ou prejudicado durante os experimentos.

Sorin
fonte
3
Você já tentou do usuário root ou sudo?
matino
Você já tentou pip install flake8 --upgrade?
Mauro Baraldi
No caso de problemas semelhantes relacionados com o uso de ambientes virtuais (venv), use a --system-site-packagesopção de herdar pacotes instalados globalmente em seu venv. Consulte stackoverflow.com/a/61326709/4445175
Wlad de

Respostas:

144

Por que você não tenta sudocom a Hbandeira? Isso deve funcionar.

sudo -H pip install flake8

Um regular sudo pip install flake8tentará usar seu próprio diretório pessoal. O -Hinstrui a usar o diretório inicial do sistema. Mais informações em https://stackoverflow.com/a/43623102/

nikhilweee
fonte
107
Hcomo em Hlobal?
Matt
65
-Hcomo em ei sudo, pare de usar meu diretório inicial. use seu próprio Hdiretório ome em vez de stackoverflow.com/a/43623102
nikhilweee
7
Isso não o instala globalmente, mas parece apenas armazená-lo no diretório inicial do usuário 'root'
parsecpython
@nikhilweee Eu não entendo como isso é diferente de pip3 install ipythonquando o virtualenv é desativado, eles parecem instalar no mesmo site-packagesdiretório.
iamfrancisyo
@parsecpython para mim, ele faz o truque e instala os pacotes em /usr/local/lib/python3.8/dist-packages onde eu queria que eles
yota
8

Talvez --force-reinstallfuncionasse, caso contrário, --ignore-installeddeveria funcionar.

Emma
fonte
4

Você está usando virtualenv? Se sim, desative o virtualenv. Se você não estiver usando, ele já está instalado amplamente (nível do sistema). Tente atualizar o pacote.

pip install flake8 --upgrade
Mauro Baraldi
fonte
3
Não é bem verdade.
GMaster
2

Na verdade, não vejo seu problema. Globalmente é qualquer pacote que esteja na pasta do pacote do site do seu caminho python3.

Se você quiser usá-lo apenas localmente, deverá configurar um virtualenv e reinstalar os pacotes com um ambiente virtual ativado.

ACESO
fonte
Ao criar um venv, você pode usar --system-site-packages .venv/devpara herdar pacotes globais, de forma que não precise reinstalá-los em cada venv. Isso faz sentido para pacotes que você pode querer usar em qualquer projeto, ou seja, black, flake8, pytest. Exemplo:python -m venv --system-site-packages .venv/dev
Wlad de
0

Onde as instalações de pip acontecem em python?

Vou dar uma solução do windows que estava enfrentando e demorou um pouco para resolver.

Em primeiro lugar, no windows (tomarei Windows como SO aqui), se o fizer pip install <package_name>, será por defeito instalado globalmente ( se não tiver activado um ambiente virtual ). Depois de ativar um ambiente virtual e estiver dentro dele, todas as instalações do pip estarão dentro desse ambiente virtual.


pip está instalando os referidos pacotes, mas não posso usá- los?

Para este pip pode estar dando a você um aviso de que os executáveis ​​do pip pip3.exe, como , pip.exenão estão em sua variável de caminho. Para isso, você pode adicionar este caminho (normalmente - C:\Users\<your_username>\AppData\Roaming\Programs\Python\) às suas variáveis ​​ambientais . Depois disso, reinicie o seu cmde agora tente usar o pacote python instalado. Deve funcionar agora.

instinto
fonte