чтобы Numpy (Python) мог найти библиотеки, которые ему нужны для запуска, поскольку он построен с использованием компиляторов MKL и Intel. Этот рабочий процесс не самый лучший, но это уже другая история.
Мой вопрос заключается в следующем как я могу передавать произвольные переменные (например, те, что в ~/.bashrc) когда я запускаю программу с помощью 'sudo' (но не root)?
В настоящее время, если я запущу:
sudo python -c "import numpy"
Я получаю сообщение об ошибке:
ImportError: libimf.so: cannot open shared object file: No such file or directory*
Некоторые предложения в качестве sudo -i или sudo -E здесь ничего не меняется.
Редактировать:
Я не могу ответить на свой вопрос (недостаточно баллов : D), но я прокомментирую здесь, в надежде, что другие новички Linux задаются вопросом о sudo ловушки.
[Только временно!] Это работает для меня (~/.bashrc):
alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'
Переменные среды могут быть просто переданы после sudo в форме ENV=VALUE, и они будут приняты следующей командой. Мне неизвестно, существуют ли ограничения на это использование, поэтому моя примерная проблема может быть решена с помощью:
Вы можете использовать -E опция sudo для сохранения текущей среды (если у вас есть права на это)
$ man sudo -E, --preserve-env Indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the user does not have permission to preserve the environment.
Вам нужно отредактировать свой sudoers около sudo visudo как возможно, у вас включен плагин политики безопасности, который переопределяет ваш PATH около secure_path вариант. Поэтому добавьте путь в список, и вы также можете использовать env_keep вместо этого, например: