Tento implantar um pacote Python pip
em um ambiente virtual em uma máquina Ubuntu, mas encontro um problema relacionado à permissão. Por exemplo:
(TestVirtualEnv)test@testServer:~$ pip install markdown2
termina em:
erro: não foi possível criar '/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py': permissão negada
Não posso sudo
, pois instalará o pacote globalmente, e não dentro do ambiente virtual. I chown
ed site-packages
; ls
mostra apenas diretórios relacionados a easy_install
, pip
e setuptools
, e nada relacionado a Markdown.
Como implantar um pacote em um ambiente virtual pip
sem encontrar erros relacionados à permissão?
python
virtualenv
pip
Arseni Mourzenko
fonte
fonte
sudo
?sudo
.sudo
. Na verdade, o pacote é instalado corretamente agora. Por favor, você pode promover seu comentário em uma resposta para que eu possa aceitá-lo?virtualenv
diretório, porque você pode ativarvirtualenv
com outro usuário, mas não permitirá que você instale nenhum pacote e dará permissão de acesso.Respostas:
virtualenv
podem ocorrer problemas de permissão quando você cria ovirtualenv
comosudo
e depois opera semsudo
novirtualenv
.Como descobrimos no comentário de sua pergunta, a solução aqui é criar o
virtualenv
semsudo
para poder trabalhar (especialmente escrever) nele semsudo
.fonte
virtualenv
sem sudo?sudo
, veja a resposta de @vingtoft para saber como corrigi-lo facilmente sem recriarSolução:
Se você criou o virtualenv como root, execute o seguinte comando:
Isso provavelmente resolverá seu problema.
Felicidades
fonte
No meu caso, eu estava usando
mkvirtualenv
, mas não disse que usaria python3. Eu tenho este erro:Funcionou depois de especificar python3:
fonte
Eu não criei meu virtualenv usando sudo. Então a resposta de Sebastian não se aplica a mim. Meu projeto é chamado
utils
. Eu verifiquei outils
diretório e vi o seguinte:Como você pode ver,
utils.egg-info
é de propriedaderoot
nãomacuser
. É por isso que estava me dandopermission denied
erro. Eu também tive que remover/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link
como foi criado porroot
também. Fiz depip install -e .
novo depois de removê-los e funcionou.fonte
Se você criou um ambiente virtual usando root, use este comando
ele lhe dará o acesso root e, em seguida, ativará seu ambiente virtual usando este
fonte
Você não ativou o ambiente virtual antes de usar o pip.
Experimente com:
E então use pip -r requirements.txt na sua pasta principal
fonte
Isso também aconteceu (por acidente) depois de criar um novo venv dentro de um ambiente virtual existente. uma maneira fácil de diagnosticar isso seria ver para onde o
python
está vinculado simbolicamente, ou seja, executar:e certifique-se de que aponta para o binário Python apropriado. Para a maioria dos sistemas, será
/usr/bin/python
ou/usr/bin/python3
. enquanto se apontar para um ambiente virtual existente, será algo assim/home/youruser/somedir/bin/python
. se for o último, sugiro recriar o venv enquanto me certifico de que você não está "dentro" de nenhum virtualenv existente (ou seja, executedeactivate
)fonte
Ao criar o virtualenv, se você usar o sudo, o diretório será criado com privilégios de root. Portanto, quando você tentar instalar um pacote com um usuário que não seja sudo, não terá permissão para instalar nele. Portanto, sempre crie virtualenv sem sudo e instale sem sudo.
Você também pode copiar pacotes instalados em python global para virtualenv.
fonte