Python
Как проверить доступность переменных окружения в Python: os.environ и getenv()
В Python переменные окружения читают через модуль os. Если нужно просто получить значение, используйте os.getenv(), а если нужно проверить сам факт наличия переменной, используйте оператор in с os.environ
import os
token = os.getenv("API_TOKEN")
if token:
print("API_TOKEN доступен")
else:
print("API_TOKEN не найден или пустой")
Такой код подходит для первого теста, но с секретами нужно быть аккуратным: не печатайте токены, пароли и ключи целиком в консоль, логи или скриншоты
Проверка через os.getenv()
os.getenv("NAME") возвращает значение переменной окружения, если она есть, и None, если переменной нет. Можно указать запасное значение вторым аргументом, и это удобно для настроек проекта: локально используется значение по умолчанию, а на сервере переменная окружения задает реальный режим работы
import os
mode = os.getenv("APP_MODE", "development")
print(mode)
Проверка наличия через os.environ
Если важно отличить «переменной нет» от «переменная есть, но пустая», используйте os.environ
import os
if "API_TOKEN" in os.environ:
print("Переменная API_TOKEN существует")
else:
print("Переменной API_TOKEN нет")
После этого можно отдельно посмотреть, пустая она или нет
value = os.environ.get("API_TOKEN")
if value == "":
print("Переменная есть, но она пустая")
elif value is None:
print("Переменной нет")
else:
print("Переменная есть и не пустая")
Как задать переменную перед запуском
На macOS и Linux можно запустить программу так
API_TOKEN=12345 python main.py
Или экспортировать переменную для текущей сессии терминала
export API_TOKEN=12345
python main.py
$env:API_TOKEN="12345"
python main.py
Эти переменные живут в текущей сессии терминала. Если закрыть терминал, настройку обычно нужно задавать заново, если вы не прописали ее в системные настройки или файл профиля оболочки
Как проверить переменную без раскрытия секрета
Если значение секретное, не печатайте его целиком. Можно вывести только факт наличия и длину
import os
token = os.getenv("API_TOKEN")
if token:
print("API_TOKEN найден")
print("Длина:", len(token))
else:
print("API_TOKEN не найден")
Если нужно убедиться, что подтянулся именно нужный ключ, можно показать первые и последние символы, но только в локальной отладке и без публикации скриншотов
Почему Python не видит переменную
Самая частая причина: переменная задана не в той сессии терминала, где запускается Python. Например, вы прописали export API_TOKEN=... в одном окне, а запускаете программу из другого. Вторая причина — редактор кода запускает программу не из вашего терминала, а из собственного процесса, где переменных окружения нет
Проверьте сначала в терминале
echo $API_TOKEN
echo $env:API_TOKEN
Потом проверьте из Python
import os
print("API_TOKEN" in os.environ)
Переменные окружения и .env
Файл .env сам по себе Python не читает. Если вы хотите хранить локальные настройки в .env, обычно используют библиотеку python-dotenv или встроенный механизм фреймворка, если он есть
python -m pip install python-dotenv
from dotenv import load_dotenv
import os
load_dotenv()
print(os.getenv("APP_MODE"))
Не добавляйте .env с секретами в публичный репозиторий. Обычно его кладут в .gitignore
Мини-задача
Создайте файл main.py
import os
required_vars = ["API_TOKEN", "APP_MODE"]
for name in required_vars:
if name in os.environ and os.environ[name]:
print(f"{name}: доступна")
else:
print(f"{name}: нет или пустая")
Запустите без переменных, потом задайте одну переменную и запустите снова. Так вы увидите разницу между отсутствующей и доступной настройкой
Частые ошибки
Печатаю секрет в консоль
Не стоит. Для проверки достаточно написать, что переменная найдена, и показать длину значения
Задал переменную, но Python ее не видит
Проверьте, из какого терминала запускается программа. Если запускаете из редактора, настройте переменные окружения в конфигурации запуска редактора
Думаю, что .env работает сам
Нет. .env нужно загружать явно через библиотеку или инструмент, который умеет читать такие файлы
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Виртуальные окружения в Python: изоляция проектов и управление зависимостями
- Как проверить наличие ключа в словаре Python: in, get() и безопасный доступ
- Как проверить первый символ строки в Python: индекс 0, startswith и пустая строка
- Как проверить тип данных в Python: type(), isinstance() и частые ошибки