Eu tenho um novo Macbook - um usuário o instalou e, em seguida, instalei um novo usuário (meu), concedi privilégios de administrador e excluí o antigo. Estou no OS Catalina.
Desde a instalação, tenho tido vários problemas de permissão. O VSCode não consegue encontrar o Jupyter Notebook, pip
instala pacotes em ~/Library/Python/3.7/site-packages
.
Quando which python3
eu recebo usr/bin/python3
. Quando pip3 install <package>
recebo: Defaulting to user installation because normal site-packages is not writeable
E depois diz que já foi instalado, mesmo que eu não possa acessá-lo quando o faço import <package>
.
Parece claro que este é um problema de permissão, pip
não pode ser instalado no python "base" e eles python
não conseguem encontrar o que eu instalei ~/Library/Python/3.7/site-packages
.
Tentei reinstalar o sistema operacional, mas como não fiz uma instalação limpa, isso não mudou nada. o que estou perdendo? Como exatamente posso corrigir permissões? Onde eu quero que os pacotes sejam instalados (com venv
certeza, mas alguns pacotes que eu quero global (como jupyter
)).
obrigado
pip
? E se você usar o muito mais seguropython -m pip install ....
?python3 -m pip install ...
neste caso, mas sim, quando há várias versões do Python envolvidas, é muito mais seguro invocarpip
por meio da abordagem "exec module", para que você saiba que está usando o esperado executável do Python.Respostas:
É melhor não usar o Python fornecido pelo sistema diretamente. Deixe esse em paz, pois o sistema operacional pode alterá-lo de maneiras indesejadas, como você experimentou.
A melhor prática é configurar suas próprias versões do Python e gerenciá-las por projeto usando
virtualenv
(para Python 2) ouvenv
(para Python 3). Isso elimina toda a dependência da versão Python fornecida pelo sistema e também isola cada projeto de outros projetos na máquina.Cada projeto pode ter uma versão de ponto Python diferente, se necessário, e obtém seu próprio
site_packages
diretório para que as bibliotecas instaladas pelo pip também possam ter versões diferentes por projeto. Essa abordagem é uma grande solução para os problemas.fonte
Teve esse mesmo problema em uma nova instalação do Debian 9.12. A reinicialização do meu servidor resolveu o problema.
fonte