Переменные окружения¶
Tip
Если вы уже знаете, что такое «переменные окружения» и как их использовать, можете пропустить это.
Переменная окружения (также известная как «env var») - это переменная, которая живет вне кода Python, в операционной системе, и может быть прочитана вашим кодом Python (или другими программами).
Переменные окружения могут быть полезны для работы с настройками приложений, как часть установки Python и т.д.
Создание и использование переменных окружения¶
Можно создавать и использовать переменные окружения в оболочке (терминале), не прибегая к помощи Python:
// Вы можете создать переменную окружения MY_NAME с помощью
$ export MY_NAME="Wade Wilson"
// Затем её можно использовать в других программах, например
$ echo "Hello $MY_NAME"
Hello Wade Wilson
// Создайте переменную окружения MY_NAME
$ $Env:MY_NAME = "Wade Wilson"
// Используйте её с другими программами, например
$ echo "Hello $Env:MY_NAME"
Hello Wade Wilson
Чтение переменных окружения в python¶
Так же существует возможность создания переменных окружения вне Python, в терминале (или любым другим способом), а затем чтения их в Python.
Например, у вас есть файл main.py
:
import os
name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")
Tip
Второй аргумент os.getenv()
- это возвращаемое по умолчанию значение.
Если значение не указано, то по умолчанию оно равно None
. В данном случае мы указываем «World»
в качестве значения по умолчанию.
Затем можно запустить эту программу на Python:
// Здесь мы еще не устанавливаем переменную окружения
$ python main.py
// Поскольку мы не задали переменную окружения, мы получим значение по умолчанию
Hello World from Python
// Но если мы сначала создадим переменную окружения
$ export MY_NAME="Wade Wilson"
// А затем снова запустим программу
$ python main.py
// Теперь она прочитает переменную окружения
Hello Wade Wilson from Python
// Здесь мы еще не устанавливаем переменную окружения
$ python main.py
// Поскольку мы не задали переменную окружения, мы получим значение по умолчанию
Hello World from Python
// Но если мы сначала создадим переменную окружения
$ $Env:MY_NAME = "Wade Wilson"
// А затем снова запустим программу
$ python main.py
// Теперь она может прочитать переменную окружения
Hello Wade Wilson from Python
Поскольку переменные окружения могут быть установлены вне кода, но могут быть прочитаны кодом, и их не нужно хранить (фиксировать в git
) вместе с остальными файлами, их принято использовать для конфигураций или настроек.
Вы также можете создать переменную окружения только для конкретного вызова программы, которая будет доступна только для этой программы и только на время ее выполнения.
Для этого создайте её непосредственно перед самой программой, в той же строке:
// Создайте переменную окружения MY_NAME в строке для этого вызова программы
$ MY_NAME="Wade Wilson" python main.py
// Теперь она может прочитать переменную окружения
Hello Wade Wilson from Python
// После этого переменная окружения больше не существует
$ python main.py
Hello World from Python
Tip
Подробнее об этом можно прочитать на сайте The Twelve-Factor App: Config.
Типизация и Валидация¶
Эти переменные окружения могут работать только с текстовыми строками, поскольку они являются внешними по отношению к Python и должны быть совместимы с другими программами и остальной системой (и даже с различными операционными системами, такими как Linux, Windows, macOS).
Это означает, что любое значение, считанное в Python из переменной окружения, будет str
, и любое преобразование к другому типу или любая проверка должны быть выполнены в коде.
Подробнее об использовании переменных окружения для работы с настройками приложения вы узнаете в Расширенное руководство пользователя - Настройки и переменные среды.
Переменная окружения PATH
¶
Существует специальная переменная окружения PATH
, которая используется операционными системами (Linux, macOS, Windows) для поиска программ для запуска.
Значение переменной PATH
- это длинная строка, состоящая из каталогов, разделенных двоеточием :
в Linux и macOS, и точкой с запятой ;
в Windows.
Например, переменная окружения PATH
может выглядеть следующим образом:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Это означает, что система должна искать программы в каталогах:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32
Это означает, что система должна искать программы в каталогах:
C:\Program Files\Python312\Scripts
C:\Program Files\Python312
C:\Windows\System32
Когда вы вводите команду в терминале, операционная система ищет программу в каждой из тех директорий, которые перечислены в переменной окружения PATH
.
Например, когда вы вводите python
в терминале, операционная система ищет программу под названием python
в первой директории в этом списке.
Если она ее находит, то использует ее. В противном случае она продолжает искать в других каталогах.
Установка Python и обновление PATH
¶
При установке Python вас могут спросить, нужно ли обновить переменную окружения PATH
.
Допустим, вы устанавливаете Python, и он оказывается в каталоге /opt/custompython/bin
.
Если вы скажете «да», чтобы обновить переменную окружения PATH
, то программа установки добавит /opt/custompython/bin
в переменную окружения PATH
.
Это может выглядеть следующим образом:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin
Таким образом, когда вы набираете python
в терминале, система найдет программу Python в /opt/custompython/bin
(последний каталог) и использует ее.
Допустим, вы устанавливаете Python, и он оказывается в каталоге C:\opt\custompython\bin
.
Если вы согласитесь обновить переменную окружения PATH
, то программа установки добавит C:\opt\custompython\bin
в переменную окружения PATH
.
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin
Таким образом, когда вы набираете python
в терминале, система найдет программу Python в C:\opt\custompython\bin
(последний каталог) и использует ее.
Итак, если вы напечатаете:
$ python
Система найдет программу python
в /opt/custompython/bin
и запустит ее.
Это примерно эквивалентно набору текста:
$ /opt/custompython/bin/python
Система найдет программу python
в каталоге C:\opt\custompython\bin\python
и запустит ее.
Это примерно эквивалентно набору текста:
$ C:\opt\custompython\bin\python
Эта информация будет полезна при изучении Виртуальных окружений.
Вывод¶
Благодаря этому вы должны иметь базовое представление о том, что такое переменные окружения и как использовать их в Python.
Подробнее о них вы также можете прочитать в статье о переменных окружения на википедии.
Во многих случаях не всегда очевидно, как переменные окружения могут быть полезны и применимы. Но они постоянно появляются в различных сценариях разработки, поэтому знать о них полезно.
Например, эта информация понадобится вам в следующем разделе, посвященном Виртуальным окружениям.