Resposta:
Adicione a opção -H
ou -i
a sudo
:
sudo -i -u www-data ./bash_script_that_calls_runs_the_pythonscript.sh
sudo -H -u www-data ./bash_script_that_calls_runs_the_pythonscript.sh
Explique:
Você pode usar python -m site
para verificar os caminhos de importação. Por exemplo, nas saídas de sudo -u www-data python -m site
, USER_SITE
não é o diretório esperado bs4
instalado.
sys.path = [
'/',
'/usr/local/lib/python3.6.2/lib/python36.zip',
'/usr/local/lib/python3.6.2/lib/python3.6',
'/usr/local/lib/python3.6.2/lib/python3.6/lib-dynload',
'/usr/local/lib/python3.6.2/lib/python3.6/site-packages',
]
USER_BASE: '/root/.local' (doesn't exist)
USER_SITE: '/root/.local/lib/python3.6/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
Com sudo -i
ou sudo -H
, você pode alternar o diretório home para o usuário www-data
e encontrar o USER_SITE
correto. As saídas de sudo -i -u www-data python -m site
podem ser:
sys.path = [
'/home/www-data',
'/usr/local/lib/python3.6.2/lib/python36.zip',
'/usr/local/lib/python3.6.2/lib/python3.6',
'/usr/local/lib/python3.6.2/lib/python3.6/lib-dynload',
'/home/www-data/.local/lib/python3.6/site-packages',
'/usr/local/lib/python3.6.2/lib/python3.6/site-packages',
]
USER_BASE: '/home/www-data/.local' (exists)
USER_SITE: '/home/www-data/.local/lib/python3.6/site-packages' (exists)
ENABLE_USER_SITE: True