Если вы уже знаете, что такое «переменные окружения» и как их использовать, можете пропустить это.
Переменная окружения (также известная как «env var») - это переменная, которая живет вне кода Python, в операционной системе, и может быть прочитана вашим кодом Python (или другими программами).
Переменные окружения могут быть полезны для работы с настройками приложений, как часть установки Python и т.д.
Можно создавать и использовать переменные окружения в оболочке (терминале), не прибегая к помощи Python:
fast →💬 Вы можете создать переменную окружения MY_NAME с помощьюexport MY_NAME="Wade Wilson" 💬 Затем её можно использовать в других программах, напримерecho "Hello $MY_NAME" Hello Wade Wilson
fast →💬 Создайте переменную окружения MY_NAME$Env:MY_NAME = "Wade Wilson" 💬 Используйте её с другими программами, напримерecho "Hello $Env:MY_NAME" Hello Wade Wilson
Так же существует возможность создания переменных окружения вне Python, в терминале (или любым другим способом), а затем чтения их в Python.
Например, у вас есть файл main.py:
importosname=os.getenv("MY_NAME","World")print(f"Hello {name} from Python")
Tip
Второй аргумент os.getenv() - это возвращаемое по умолчанию значение.
Если значение не указано, то по умолчанию оно равно None. В данном случае мы указываем «World» в качестве значения по умолчанию.
Затем можно запустить эту программу на Python:
fast →💬 Здесь мы еще не устанавливаем переменную окруженияpython main.py 💬 Поскольку мы не задали переменную окружения, мы получим значение по умолчанию Hello World from Python
💬 Но если мы сначала создадим переменную окруженияexport MY_NAME="Wade Wilson" 💬 А затем снова запустим программуpython main.py 💬 Теперь она прочитает переменную окружения Hello Wade Wilson from Python
fast →💬 Здесь мы еще не устанавливаем переменную окруженияpython main.py 💬 Поскольку мы не задали переменную окружения, мы получим значение по умолчанию Hello World from Python
💬 Но если мы сначала создадим переменную окружения$Env:MY_NAME = "Wade Wilson" 💬 А затем снова запустим программуpython main.py 💬 Теперь она может прочитать переменную окружения Hello Wade Wilson from Python
Поскольку переменные окружения могут быть установлены вне кода, но могут быть прочитаны кодом, и их не нужно хранить (фиксировать в git) вместе с остальными файлами, их принято использовать для конфигураций или настроек.
Вы также можете создать переменную окружения только для конкретного вызова программы, которая будет доступна только для этой программы и только на время ее выполнения.
Для этого создайте её непосредственно перед самой программой, в той же строке:
fast →💬 Создайте переменную окружения MY_NAME в строке для этого вызова программыMY_NAME="Wade Wilson" python main.py 💬 Теперь она может прочитать переменную окружения Hello Wade Wilson from Python
💬 После этого переменная окружения больше не существуетpython main.py Hello World from Python
Эти переменные окружения могут работать только с текстовыми строками, поскольку они являются внешними по отношению к Python и должны быть совместимы с другими программами и остальной системой (и даже с различными операционными системами, такими как Linux, Windows, macOS).
Это означает, что любое значение, считанное в Python из переменной окружения, будет str, и любое преобразование к другому типу или любая проверка должны быть выполнены в коде.
Существует специальная переменная окружения PATH, которая используется операционными системами (Linux, macOS, Windows) для поиска программ для запуска.
Значение переменной PATH - это длинная строка, состоящая из каталогов, разделенных двоеточием : в Linux и macOS, и точкой с запятой ; в Windows.
Например, переменная окружения PATH может выглядеть следующим образом:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Это означает, что система должна искать программы в каталогах:
Во многих случаях не всегда очевидно, как переменные окружения могут быть полезны и применимы. Но они постоянно появляются в различных сценариях разработки, поэтому знать о них полезно.
Например, эта информация понадобится вам в следующем разделе, посвященном Виртуальным окружениям.