A razão pela qual isso ocorre é quando você executa no modo sudo suas variáveis de env atuais não são retidas. Se você executar seu comando sudo com a opção -E, ele passará sua variável de ambiente.
Faça uma leitura do man sudo para mais detalhes
Eu quero modificar um script de shell linux usado para instalar um módulo python (setup.sh) para adicionar a pasta a uma variável de ambiente. Isso é necessário para que eu possa executar o módulo python de um terminal. por exemplo. python -m newtool.py
Após algumas leituras, o método que implementei está no arquivo setup.sh para chamar um script python (addmoduletopath.py) e acrescentar a nova pasta do módulo python à variável env do PYTHONPATH (usando sys.path.append).
Isto parece adicionar o módulo python à variável env PYTHONPATH. Após a configuração quando eu corro "python -m newtool.py" python encontra o caminho do módulo. No entanto, quando eu executar o mesmo comando com o sudo (ou seja, sudo python -m newtool.py) recebo a mensagem "nenhum módulo chamado newtool"
Alguma idéia?
Entre. Aqui está o meu script addmoduletopath.py:
#!/usr/bin/env python
import sys
newtool="/opt/newtool"
if (newtool not in sys.path):
sys.path.append(newtool)
A razão pela qual isso ocorre é quando você executa no modo sudo suas variáveis de env atuais não são retidas. Se você executar seu comando sudo com a opção -E, ele passará sua variável de ambiente.
Faça uma leitura do man sudo para mais detalhes
Tags python path shell-script