Duas distribuições python, sudo escolhendo o errado

1

Estou de volta ao Linux depois de mais de 10 anos de abstinência (engana-me pensa). E um pouco enferrujado no departamento de administração do sistema.

Estou diante de um problema com a distribuição do meu python. Estou usando o Python 2.7, mas baseado no sabor do Anaconda. Eu segui a orientação padrão, mas recentemente descobri um problema que não sei como consertar.

Em sudo , o Python padrão fornecido com o Ubuntu é fornecido. Sob minha conta de usuário, o python aponta para a versão do Anaconda:

dhk@localhost:~/home/$which python
/opt/anaconda/bin/python
dhk@localhost:~/home/$sudo which python
/usr/bin/python

Este é um problema, pois usar sudo pip [anything] geralmente age no diretório errado, mas não posso usá-lo sem o sudo.

    
por Hans 07.06.2014 / 09:57

1 resposta

2

Sudoers especifica um secure_path :

Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Isto irá sobrescrever o seu PATH local, assim seu virtualenv não é usado. Você tem algumas opções:

  • Chame seu binário python explicitamente: sudo /opt/anaconda/bin/python file.py
  • Comente a linha secure_path em /etc/sudoers (mas provavelmente está lá por um motivo)
  • Especifique keep_env para este comando específico (embora isso provavelmente tenha problemas semelhantes aos anteriores).

Não adicione seu caminho do Python ao secure_path , pois isso provavelmente estragará mais do que algumas chamadas sudo padrão.

    
por Oli 07.06.2014 / 10:53