Избегайте передачи переменной среды в скрипт 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

One Solution collect form web for “Избегайте передачи переменной среды в скрипт python”

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

 #!/usr/bin/env python3 -E 

-E

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

  • Почему «she-bang» начинается с «#!»?
  • Распространение сценария. Должен ли я использовать / bin / gawk или / usr / bin / gawk для shebang?
  • Запуск сценария python с терминала Linux
  • `sudo -u user` в строке shebang
  • Нет такого файла или каталога, но я могу это увидеть!
  • Shebang не устанавливает SHELL в cron
  • Когда использовать #! / Bin / ksh и #! / Bin / sh? Нужен пример
  • Почему #! / Usr / bin / env bash не работает в моей системе?
  • Всегда ли shebang совпадает с каталогом установки интерпретатора?
  • строка shebang не работает с cr-lf
  • Запустить скрипт на экране
  • Как я должен обрабатывать shebang при написании моей собственной оболочки?
  • Linux и Unix - лучшая ОС в мире.