Pipenv: Comando não encontrado

119

Sou novo no desenvolvimento Python e tento usar pipenv. Executei o comando pip install pipenv, que foi executado com sucesso:

...
Successfully built pipenv pathlib shutilwhich pythonz-bd virtualenv-clone
Installing collected packages: virtualenv, pathlib, shutilwhich, backports.shutil-get-terminal-size, pythonz-bd, virtualenv-clone, pew, first, six, click, pip-tools, certifi, chardet, idna, urllib3, requests, pipenv
...

No entanto, quando eu executar o comando pipenv installem um diretório do projeto raiz fresca eu recebo a seguinte mensagem: -bash: pipenv: command not found. Suspeito que possa precisar modificar meu .bashrc, mas não estou certo sobre o que adicionar ao arquivo ou se a modificação é mesmo necessária.

lgants
fonte
1
Verifique /usr/local/bin/pipenv- está aí? Está /usr/local/binna sua $PATH?
phd
3
O mesmo problema aqui: pipenv construído com sucesso, mas nenhum sinal da pasta pipenv em / usr / local / bin.
Feito em
Você está instalando pipenvglobalmente?
dethos

Respostas:

127

Isso acontece porque você não está instalando globalmente (em todo o sistema). Para que esteja disponível em pathvocê você precisa instalá-lo usando sudo, assim:

$ sudo pip install pipenv
dethos
fonte
86
para os copiadores que estão por aí, esse comando geralmente é executado como sudo -H pip install -U pipenv(por exemplo, no ubuntu), instalando pipenvem /usr/local/bin. A alternativa é uma instalação pelo usuário, por exemplo,, $ pip install pipenvque é igual a $ pip install --user pipenv, que instala coisas em $HOME/.local/..., exigindo que a PATHseja modificada como na outra resposta, stackoverflow.com/a/47111756/127971
michael
3
Isso me leva a cada vez com um novo ambiente de área de trabalho.
Ligemer
@michael Você tem a melhor resposta em comentário. Vergonha! Postá-lo como resposta homem
Rahul
@michael esta é a única coisa que funcionou para mim, muito obrigado!
Jaycarleton
@michael Obrigado pela resposta. Confirmado que funcionou.
ultrassom
128

Isso resolveu para mim:

sudo -H pip install -U pipenv
tuan ly
fonte
3
Funcionou perfeitamente! Por acaso, você sabe o que significam esses comandos (-H e -U)?
Babbz77
12
@ Babbz77 A opção -H (HOME) para sudo solicita que a política de segurança defina a variável de ambiente HOME para o diretório inicial do usuário de destino (root por padrão) conforme especificado pelo banco de dados de senha. O -U para pip install atualiza todos os pacotes especificados para a versão mais recente disponível. O tratamento das dependências depende da estratégia de atualização usada.
Andrey Vaganov
Muito obrigado, estou lutando muito, mas sua resposta me salvou.
vdkotian
1
Esta deve ser a resposta. Funcionou perfeitamente. Eu procurei um pouco. Obrigado
Ivan Gonzalez
63

Se você tiver feito uma instalação de usuário, precisará adicionar a pasta certa à sua PATHvariável.

PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
PATH="$PATH:$PYTHON_BIN_PATH"

Veja as instruções de instalação do pipenv

charlax
fonte
Isso foi útil, porque eu precisava rodar pipenv run, e as instruções de instalação me disseram isso.
eksortso
1
Você deve testar python3 -m sitepara ver se o diretório --user-base existe!
Claudio Santos
Deve ser aceita resposta, obrigado!
Maxime Lafarie
21

Eu tentei isso:

python -m pipenv # for python2

python3 -m pipenv # for python3

Espero que isso possa ajudá-lo.

user9563571
fonte
1
Obrigado, por que preciso incluir python -m toda vez que executo o pipenv?
suisied em
14

Eu tenho o mesmo problema pipenvno Mac OS X 10.13 High Seirra, outro Mac funciona bem. Eu uso o Heroku para implantar meus servidores Django, alguns no 2.7 e alguns no 3.6. Portanto, preciso de 2.7 e 3.6. Quando o HomeBrew instala o Python, ele pythonaponta para o 2.7 original e python3aponta para o 3.6.

O problema pode ser devido a $ pip install pipenv. Eu verifiquei / usr / local / bin e pipenv não está lá. Então, tentei uma desinstalação completa:

$ pip uninstall pipenv

Cannot uninstall requirement pipenv, not installed
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

$ pip3 uninstall pipenv
Skipping pipenv as it is not installed.

Em seguida, reinstale e funcione agora:

$ pip3 install pipenv
Collecting pipenv
John Pang
fonte
8

GALERA OSX, AQUI !!!

Como @charlax respondeu (para mim o melhor), você pode usar um comando mais dinâmico para definir o PATH, mas para usuários do mac isso não poderia funcionar , às vezes seu caminho USER_BASE obtido do site está errado, então você precisa descobrir onde está a instalação do python é.

$ which python3
/usr/local/bin/python3.6

você obterá um link simbólico, então você precisa encontrar o link simbólico da fonte.

$ ls -la /usr/local/bin/python3.6
  lrwxr-xr-x  1 root  wheel  71 Mar 14 17:56 /usr/local/bin/python3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

(isso ../../../significa root)

Então você encontrou o caminho python ( /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6), então você só precisa inserir ~ / .bashrc da seguinte maneira:

export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.6/bin"

Claudio santos
fonte
1
Corrigido meu problema. Saúde
Floran Gmehlin
Instalei o python3 através do Homebrew. Quando executei which python3a saída /Cellar/python/3.7.7/bin/python3que eu atribuí ao meu PATH, mas ainda `` pipenv` não encontrado`. Qualquer ideia?
Ozkan Serttas
6

Onde Python armazena pacotes

Antes de pular para o comando que irá instalar pipenv, vale a pena entender onde pip instala os pacotes Python .

Global site-packages é onde o Python instala os pacotes que estarão disponíveis para todos os usuários e todos os aplicativos Python no sistema. Você pode verificar o pacote global do site com o comando

python -m site

Por exemplo, no Linux com Python 3.7, o caminho geralmente é

/usr/lib/python3.7/dist-packages/setuptools

Os pacotes do site do usuário é onde o Python instala os pacotes disponíveis apenas para você. Mas os pacotes ainda estarão visíveis para todos os projetos Python que você criar. Você pode obter o caminho com

python -m site --user-base

No Linux com Python 3.7, o caminho geralmente é

~/.local/lib/python3.7/site-packages

Usando Python 3.x

Na maioria dos Linux e outros Unices, geralmente Python 2 e Python 3 são instalados lado a lado. O executável padrão do Python 3 é quase sempre python3. pippode estar disponível como um dos seguintes, dependendo da sua distribuição Linux

pip3
python3-pip
python36-pip
python3.6-pip

Linux

Evite usar pipcom sudo! Sim, é a maneira mais conveniente de instalar pacotes Python e o executável está disponível em /usr/local/bin/pipenv, mas também significa que o pacote específico está sempre visível para todos os usuários e todos os projetos Python que você criar. Em vez disso, use pacotes de site por usuário em vez de--user

pip3 install --user pipenv

pipenv está disponível em

~/.local/bin/pipenv

Mac OS

No macOS, o Homebrew é a maneira recomendada de instalar o Python . Você pode facilmente atualizar o Python, instalar várias versões do Python e alternar entre as versões usando o Homebrew.

Se você estiver usando o Homebrew'ed Python, pip install --userestá desabilitado. O pacote global do site está localizado em

/usr/local/lib/python3.y/site-packages

e você pode instalar os pacotes Python com segurança aqui. Python 3.y também procura módulos em:

 /Library/Python/3.y/site-packages
 ~/Library/Python/3.y/lib/python/site-packages

janelas

Por motivos de legado, o Python é instalado em C:\Python37. O executável Python geralmente é nomeado py.exee pode ser executado pipcom ele py -m pip.

Os pacotes de sites globais são instalados em

C:\Python37\lib\site-packages

Já que você normalmente não compartilha seus dispositivos Windows, também pode instalar um pacote globalmente

py -m pip install pipenv

pipenv agora está disponível em

C:\Python37\Scripts\pipenv.exe

Não recomendo instalar pacotes Python no Windows com --user, porque o diretório de pacote do site do usuário padrão está em seu perfil de roaming do Windows

C:\Users\user\AppData\Roaming\Python\Python37\site-packages 

O perfil de roaming é usado em Terminal Services (Remote Desktop, Citrix, etc) e quando você faz logon / logoff em um ambiente corporativo. Login, logoff e reinicialização lentos no Windows podem ser causados ​​por um grande perfil de roaming.

Hanxue
fonte
5

A instalação do pipenv globalmente pode ter um efeito adverso ao sobrescrever a instalação do pip global / gerenciada pelo sistema, resultando em erros de importação ao tentar executar o pip.

Você pode instalar o pipenv no nível do usuário:

pip install --user pipenv

Isso deve instalar o pipenv no nível do usuário em /home/username/.local para que não entre em conflito com a versão global do pip. No meu caso, isso ainda não funcionou depois de executar a opção '--user', então executei o comando mais longo 'consertar o que estraguei' uma vez para restaurar o ambiente gerenciado do sistema:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

^ encontrado aqui: Erro após atualizar o pip: não é possível importar o nome 'principal'

e então fiz o seguinte:

mkdir /home/username/.local ... se ainda não existe

export PYTHONUSERBASE=/home/username/.local

Certifique-se de que a exportação tenha efeito (me morda uma vez durante este processo):

echo $PYTHONUSERBASE

Então, eu corri o pip install --user pipenve tudo estava bem. Eu poderia então executar o pipenv a partir da CLI e ele não substituiu o módulo pip global / gerenciado pelo sistema. Claro, isso é específico para o usuário, portanto, você deseja ter certeza de instalar o pipenv dessa forma enquanto trabalha como o usuário que deseja usar o pipenv.

Referências:

https://pipenv.readthedocs.io/en/latest/diagnose/#no-module-named-module-name https://pipenv.readthedocs.io/en/latest/install/#pragmatic-installation-of-pipenv https://pip.pypa.io/en/stable/user_guide/#user-installs

NetRay
fonte
1

Isso foi corrigido para mim:

sudo -H pip install -U pipenv
Asliddin Muzaffarov
fonte
1

Depois de instalar pipenv ( sudo pip install pipenv), continuei recebendo o erro "Comando não encontrado" ao tentar executar o pipenv shellcomando.

Finalmente consertei com o seguinte código:

pip3 install pipenv
pipenv shell
Podenborg
fonte
0

Você pode considerar a instalação pipenvvia pipsi.

curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get -pipsi.py | python3
pipsi install pew
pipsi install pipenv

Infelizmente, há alguns problemas com o macOS + python3 no momento da escrita, consulte 1 , 2 . No meu caso, tive que mudar o bashprompt para#!/Users/einselbst/.local/venvs/pipsi/bin/python

einSelbst
fonte
0

Em alguns casos de pipversão antiga :

sudo easy_install pip
sudo pip install pipenv
Prosti
fonte
0

Para usuários de janela, isso pode ser devido a instalação conflitante com o virtualenv. Para mim, funcionou quando desinstalei primeiro o virtualenv e o pipenv e, em seguida, instalei apenas o pipenv.

pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv

Agora pipenv install xxxfuncionou para mim

akhila survi
fonte
0

No Mac OS X Catalina, parece seguir o caminho do Linux. Usando qualquer um dos:

pip install pipenv
pip3 install pipenv
sudo pip install pipenv
sudo pip3 install pipenv

Essencialmente instala pipenv aqui:

/Users/mike/Library/Python/3.7/lib/python/site-packages/pipenv

Mas não é o executável e por isso nunca é encontrado. A única coisa que funcionou para mim foi

pip install --user pipenv

Isso parece resultar em um __init__.pyarquivo no diretório acima que possui conteúdo para expor corretamente o pipenvcomando.

e tudo começou a funcionar, quando todas as outras sugestões postadas e comentadas sobre esta questão falharam.

O pacote pipenv certamente parece bastante exigente.

Michael Coxon
fonte
para usuários de Mac, este código também funciona, sudo -H python3 -m pip install pipenv
Jay Dangar