Intereting Posts
Использование prelink для загружаемых вручную библиотек? (например, родные библиотеки Java) Какие горячие клавиши поддерживаются при чтении страницы руководства? (debian) установка mod_qos на apache приводит к ошибке при запуске awk с утверждениями if Overlayfs монтируется, но получает «файловую систему только для чтения» при любой записи Как использовать `smart-compile` без подтверждения в Emacs Синтаксическая ошибка Bash, когда «else» следует за пустой категорией «then» Какая группа пользователей может использовать сетевое устройство «tap»? Элементы SELinux, основанные на файлах Как удалить набор из portage Отобразить физический путь USB-устройства к номеру шины / устройства, возвращенному lsusb Как файловый менеджер может монтировать диск без root Java использует max 8 ядер на Debian, хотя 16 доступны Удаление и преобразование зоны Solaris Сравните две даты изменения файла

Избегайте передачи переменной среды в скрипт python

У меня есть небольшой скрипт python

#!/usr/bin/env python3 import some_python3_module def main(): # do stuff if __name__ == '__main__': main() 

и не может запустить этот скрипт с помощью Python3, так как ROS устанавливает переменную PYTHONPATH в некоторые местоположения, связанные с версией 2.7. То есть Python 3 не может найти какие-либо модули в своем каталоге dist-packages . Я хотел бы переопределить это поведение, не изменяя внешнюю среду. То есть, я хочу unset PYTHONPATH , но только для этого скрипта и, желательно, изнутри, так что shebang все равно будет работать. Это возможно?

Не уверен, что это лучше подходит для superuser.com

Существует опция командной строки, которая соответствует вашим потребностям:

 #!/usr/bin/env python3 -E 

-E

Игнорируйте все переменные среды PYTHON *, например PYTHONPATH и PYTHONHOME, которые могут быть установлены.