Переменные окружения для python проектов

Preview Environment Variables

Note: You need Vercel CLI version 22.0.0 or higher to use the features described in this section.

Preview Environment Variables are applied to deployments from any Git branch that does not match the . When you add a Preview Environment Variable, you can choose to apply to all Preview branches or you can select a specific branch.

When you push to a branch, a combination of Preview Environment Variables and branch-specific variables (if any) will be used. Any branch-specific variables will override other variables with the same name. This means you don’t need to replicate all your existing Preview Environment Variables for each branch – you only need to add the values you wish to override.

Adding an Environment Variable to the branch.

Managing environment variables using third-party software

If anything goes wrong with any important environment variable (like the Path variable which we discussed), some Windows tasks will be affected and you will not be able to use the Operating System normally. Therefore it is always advisable to edit or remove the environment variables with great care. We will discuss some third party software to manage and back up environment variables.

Rapid Environment Editor

Rapid Environment Editor (REE) provides a very user-friendly way of editing environment variables. It lists the system variables in the left pane and the user variables in the right pane, while the bottom pane will give details about the selected variable.

The best thing about REE is that it will also highlight a variable if its value has some errors. You can also back up the environment variable configuration from the file menu. Rapid Environment Editor comes with an installable program as well as a portable one. If you are using the portable REE in Windows 7 or Windows 8, you will need to run the executable in the administrative mode so that it can make changes to the system configuration.Rapid Environment Editor

PathMan

PathMan is a very simple portable program which will only edit the PATH environment variable. Since PATH is the variable which needs to be edited frequently, PathMan can come in handy for editing Path environment variable directly from the USB drive.

Eveditor

Eveditor comes with an elegant and very user-friendly graphical user interface which resembles the look and feel of Windows Explorer. You can choose from a user variable or system variable from the pane on the left. The selection will be displayed on the right-hand pane. The details of the selected environment variable will be displayed in the bottom pane.

You can edit the selected variable, and upon clicking the “Set” button, the variable will be saved. Please note that you will need to run Eveditor with administrative privileges in order to save the environment variables successfully.Eveditor

Установка и удаление пользовательских переменных

Отредактируйте файл .bashrc, в вашей домашней директории, добавив команду export, для экспортирования нужной переменной. Затем выполните команду source для применения изменений. Создадим, например, переменную CD:

Добавьте такую строчку (o, затем вставить, затем Esc и :wq):

Теперь осталось обновить конфигурацию:

Для удаления этой переменной просто удалите ее из .bashrc.

Теперь добавим переменную окружения с помощью .bash_profile. Эта переменная, как вы уже знаете будет доступна только при удаленном входе:

Добавьте строчку:

И выполните эти команды, чтобы применить изменения и проверить добавление переменной:

Переменная недоступна, так как вы создали локальную терминальную сессию, теперь подключитесь по ssh:

Удалить эту переменную окружения можно так же как и в предыдущем случае, удалив ее из файла.

Замечание: Эти переменные доступны всегда, но не для всех пользователей.

Динамические переменные среды

В отличие от обычных переменных, динамические переменные среды предоставляются CMD, а не системой. Вы не можете изменять значения этих переменных, и они расширяются до различных дискретных значений при запросе. Мы обычно используем эти переменные для пакетной обработки, и они не хранятся в среде. Даже команда «SET» не покажет эти переменные. Некоторые из динамических переменных среды:

Некоторые из динамических переменных среды:

  • %CD%: ввод этой команды даст вам текущий каталог, в котором вы работаете.
  • %DATE%: эта переменная будет отображать текущую дату в соответствии с настройками формата даты.
  • %TIME%: аналогично, оно показывает текущее время в соответствии с настройками формата времени.
  • %RANDOM%: эта переменная печатает случайное число .
  • %ERRORLEVEL%: определяет уровень ошибки, установленный последней выполняемой командой.
  • %CMDEXTVERSION%: эта переменная распространяется на версию расширений командной строки.

Это было в значительной степени о системных и пользовательских переменных среды в Windows. Windows имеет гораздо больше переменных — не забудьте проверить их с помощью команды «SET».

Переменные окружения для Python проектов

При разработки web-приложения или бота мы часто имеем дело с какой-либо секретной информацией, различными токенами и паролями (API-ключами, секретами веб-форм). «Хардкодить» эту информацию, а тем более сохранять в публично доступной системе контроля версий это очень плохая идея.

Конфигурационные файлы

Самый простой путь решения данной проблемы, это создание отдельного конфигурационного файла со всей чувствительной информацией и добавление его в . Минус такого подхода в том, что в гит нужно держать ещё и шаблон конфигурационного файла и не забывать его периодически обновлять.

Переменные окружения

Более продвинутый подход, это использование переменных окружения. Переменные окружения это именованные переменные, содержащие текстовую информацию, которую могут использовать запускаемые программы. Например, чтобы запустить flask-приложение, вначале нужно указать в переменной окружения имя нашего приложения:

С помощью переменных окружения можно получать различные параметры приложение и секретные ключи:

Библиотека python-dotenv

Теперь можно создать файл .env со всеми переменными среды, которые необходимы вашему приложению

Важно, добавьте -файл в , не храните его в системе контроля версий

Этот .env-файл можно использовать для всех переменных конфигурации, но его нельзя использовать для переменных среды и , так как они необходимы уже в процессе начальной загрузки приложения.

Утилита direnv

Установка direnv

Далее необходимо внести изменения для настройки нашей оболочки, для bash необходимо в конец файла добавить следующее и перезапустить консоль:

Создание виртуального окружения

Если в файл добавить строчку

то при переходе в папку будет direnv создаст виртуальное окружение в папке direnv, например .
Чтобы создать виртуальное окружение с другим путем, например в более привычной папке venv, надо задать переменную :

Таким же способом можно подключать уже созданное виртуальное окружение.

Создаем строку приглашения bash (PS1)

В отличие от ручной активации виртуального окружения, в нашем случае строка приглашения bash (PS1) не будет изменена (обычно она выглядит как ). Чтобы вернуть показ активации виртуального окружения в консоли нужно в файл добавить следующий код:

Пример файла настройки файла

Вот так может выглядеть файл настроенный для разработки flask-приложения:

Это позволяет автоматически активировать виртуальное окружение и загрузить переменные окружения при входе в папку с проектом.

Resources

  • Windows XP Service Pack 2 Support Tools
  • Windows Server 2003 Resource Kit Tools
  • Reg — Edit Registry | Windows CMD | SS64.com
  • Reg — Microsoft TechNet
  • Registry Value Types (Windows) — Microsoft Windows Dev Center
  • How to propagate environment variables to the system — Microsoft Support
  • WM_SETTINGCHANGE message (Windows) — Microsoft Windows Dev Center
  • Environment Variables (Windows) — Microsoft Windows Dev Center

Windows Server 2003 Resource Kit Tools will also work with Windows XP and Windows XP SP1; use Windows XP Service Pack 2 Support Tools with Windows XP SP2. Neither download is supported on 64-bit version.

Переменные среды Windows

Получить информацию о существующих переменных можно в свойствах системы. Для этого кликаем по ярлыку Компьютера на рабочем столе правой кнопкой мыши и выбираем соответствующий пункт.

Переходим в «Дополнительные параметры».

В открывшемся окне с вкладкой «Дополнительно» нажимаем кнопку, указанную на скриншоте ниже.

Здесь мы видим два блока. Первый содержит пользовательские переменные, а второй системные.

Если требуется просмотреть весь перечень, запускаем «Командную строку» от имени администратора и выполняем команду (вводим и нажимаем ENTER).

Подробнее: Как открыть «Командную строку» в Windows 10

На рабочем столе появится файл с названием «set.txt», в котором будут указаны все переменные окружения, имеющиеся в системе.

Все их можно использовать в консоли или скриптах для запуска программ или поиска объектов, заключив имя в знаки процента. Например, в команде выше вместо пути

мы использовали

Переменные PATH и PATHEXT

Если с обычными переменными все понятно (одна ссылка – одно значение), то эти две стоят особняком. При детальном рассмотрении видно, что они ссылаются сразу на несколько объектов. Давайте разберемся, как это работает.

«PATH» позволяет запускать исполняемые файлы и скрипты, «лежащие» в определенных каталогах, без указания их точного местоположения. Например, если ввести в «Командную строку»

система осуществит поиск по папкам, указанным в значении переменной, найдет и запустит соответствующую программу. Этим можно воспользоваться в своих целях двумя способами:

  • Поместить необходимый файл в одну из указанных директорий. Полный список можно получить, выделив переменную и нажав «Изменить».

  • Создать свою папку в любом месте и прописать путь к ней. Для этого (после создания директории на диске) жмем «Создать», вводим адрес и ОК.

    Затем нажимаем ОК в окнах «Переменные среды» и «Свойства системы».

Для применения настроек, возможно, придется перезапустить «Проводник». Сделать это быстро можно так:

Открываем «Командную строку» и пишем команду

Все папки и «Панель задач» исчезнут. Далее снова запускаем «Проводник».

Еще один момент: если вы работали с «Командной строкой», ее также следует перезапустить, то есть консоль не будет «знать», что настройки изменились. Это же касается и фреймворков, в которых вы отлаживаете свой код. Также можно перезагрузить компьютер или выйти и снова зайти в систему.

Теперь все файлы, помещенные в «C:\Script» можно будет открывать (запускать), введя только их название.

«PATHEXT», в свою очередь, дает возможность не указывать даже расширение файла, если оно прописано в ее значениях.

Принцип работы следующий: система перебирает расширения по очереди, пока не будет найден соответствующий объект, причем делает это в директориях, указанных в «PATH».

Создание переменных среды

Создаются переменные просто:

Нажимаем кнопку «Создать». Сделать это можно как в пользовательском разделе, так и в системном.

Вводим имя, например, «desktop»

Обратите внимание на то, чтобы такое название еще не было использовано (просмотрите списки).

В поле «Значение» указываем путь до папки «Рабочий стол».

Нажимаем ОК. Повторяем это действие во всех открытых окнах (см

выше).

Перезапускаем «Проводник» и консоль или целиком систему.
Готово, новая переменная создана, увидеть ее можно в соответствующем списке.

Для примера переделаем команду, которую мы использовали для получения списка (самая первая в статье). Теперь нам вместо

потребуется ввести только

Заключение

Использование переменных окружения позволяет значительно сэкономить время при написании скриптов или взаимодействии с системной консолью. Еще одним плюсом является оптимизация создаваемого кода. Имейте в виду, что созданные вами переменные отсутствуют на других компьютерах, и сценарии (скрипты, приложения) с их использованием работать не будут, поэтому перед тем, как передавать файлы другому пользователю, необходимо уведомить его об этом и предложить создать соответствующий элемент в своей системе.

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Переменные среды¶

Что это такое?

Переменная среды — это именованный объект, который содержит информацию, используемую одним или несколькими приложениями. Многие пользователи (особенно новички в Linux) находят этот подход несколько странным или неуправляемым. Но это впечатление ошибочно: используя переменные среды, можно очень легко изменить настройку разнообразных программ.

Важные примеры

В следующей таблице описывается ряд переменных, используемых в системе Linux. Примеры их значений приведены далее.

Переменная Описание
PATH В этой переменной содержится список каталогов, разделенных двоеточиями, в которых система ищет исполняемые файлы. Если вы вводите имя исполняемого файла например ls, rc-update или emerge), который не находится ни в одной из перечисленных здесь каталогов, этот файл не запустится (если, конечно, вы не указали полный путь, например ).
ROOTPATH У этой переменной такое же значение, что и у PATH, но в ней перечисляются только те каталоги, которые нужно просматривать при вводе команды пользователем с правами root.
LDPATH В этой переменной содержится список каталогов, разделенных двоеточиями, в которых динамический компоновщик ищет библиотеки.
MANPATH В этой переменной содержится список каталогов, разделенных двоеточиями, в которых команда man ищет страницы справки.
INFODIR В этой переменной содержится список каталогов, разделенных двоеточиями, в которых команда info ищет info-страницы.
PAGER В этой переменной содержится путь к программе, позволяющей постранично просматривать содержимое файлов, например less или more.
EDITOR В этой переменной содержится путь к программе, используемой для изменения файлов, например vi или nano.
KDEDIRS В этой переменной содержится список каталогов, разделенных двоеточиями, в которых находятся ресурсы KDE.
CLASSPATH В этой переменной содержится список каталогов, разделенных двоеточиями, в которых находятся классы Java.
CONFIG_PROTECT В этой переменной содержится список каталогов, защищаемых Portage при обновлении, разделенных пробелами.
CONFIG_PROTECT_MASK В этой переменной содержится список каталогов, исключаемых из защиты Portage при обновлении, разделенных пробелами.

Ниже представлен пример определения всех этих переменных:

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin" 
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" 
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" 
MANPATH="/usr/share/man:/usr/local/share/man" 
INFODIR="/usr/share/info:/usr/local/share/info" 
PAGER="/usr/bin/less" 
EDITOR="/usr/bin/vim" 
KDEDIRS="/usr" 
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:." 
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config" 
CONFIG_PROTECT_MASK="/etc/gconf" 

Heap dump options

The preferred mechanism for controlling the production of Java dumps is by using the option. However, these legacy environment variables are preserved and can still be used.

Environment Variable Usage Information
Setting this option to enables heap dump production by using signals.
Setting this option to enables heap dump production by using signals.
The default location into which the heap dump is written. On z/OS, the environment variable is used instead.
Controls the generation of a heap dump when an out-of-memory exception is thrown. When not set, a heap dump is generated when an out-of-memory exception is thrown but not caught and handled by the application. Set to TRUE to generate a dump when an out-of-memory exception is thrown, even if it is handled by the application. Set to FALSE to disable heap dump for an out-of-memory exception.
Use this environment variable to cause the VM to generate both PHD and text versions of heap dumps. Equivalent to on the option.
Use this environment variable to cause the VM to generate a text (human readable) Heap dump. Equivalent to on the option.
This variable specifies an alternative temporary directory. This directory is used only when Java dumps and heap dumps cannot be written to their target directories, or the current working directory. The default is ( for Windows).

Note: You can use the dump agent variable to control the conditions under which Heap dumps are produced.

Why do I need to open the profile folder?

Usually, you don’t need to open your profile folder directly. The Quick Access shortcuts on the left side of the File Explorer window (Desktop, Documents, Downloads, Music, etc.) already point to the major folders in your profile directory.

Note

As a general rule, you should not rearrange the files and folders that already exist in your profile directory, because Windows expects them to have certain names and locations. For instance, do not move or rename your Desktop folder.

However, you can put files and folders in your profile directory if you choose.

Also, some tasks, such as adding items to your Startup folder, require you know the location of your profile folder.

How to make Windows programs start automatically.

Examples

The following section lists a number of common environment variables used by a Linux system and describes their values.

DE indicates the Desktop Environment being used. xdg-open will use it to choose more user-friendly file-opener application that desktop environment provides. Some packages need to be installed to use this feature. For GNOME, that would be libgnomeAUR; for Xfce this is exo. Recognised values of DE variable are: gnome, kde, xfce, lxde and mate.

The environment variable needs to be exported before starting the window manager. For example:
~/.xinitrc
export DE="xfce"
exec openbox
This will make xdg-open use the more user-friendly exo-open, because it assumes it is running inside Xfce. Use exo-preferred-applications for configuring.

DESKTOP_SESSION is similar to DE, but used in LXDE desktop environment: when DESKTOP_SESSION is set to LXDE, xdg-open will use PCManFM file associations.

PATH contains a colon-separated list of directories in which your system looks for executable files. When a regular command (e.g. ls, systemctl or pacman) is interpreted by the shell (e.g. bash or zsh), the shell looks for an executable file with the same name as your command in the listed directories, and executes it. To run executables that are not listed in PATH, a relative or absolute path to the executable must be given, e.g. ./a.out or /bin/ls.

Note: It is advised not to include the current working directory () into your for security reasons, as it may trick the user to execute vicious commands.

HOME contains the path to the home directory of the current user. This variable can be used by applications to associate configuration files and such like with the user running it.

PWD contains the path to your working directory.

OLDPWD contains the path to your previous working directory, that is, the value of PWD before last cd was executed.

TERM contains the type of the running terminal, e.g. xterm-256color. It is used by programs running in the terminal that wish to use terminal-specific capabilities.

ftp_proxy and http_proxy contains FTP and HTTP proxy server, respectively:

ftp_proxy="ftp://192.168.0.1:21"
http_proxy="http://192.168.0.1:80"

MANPATH contains a colon-separated list of directories in which man searches for the man pages.

Note: In , there is a comment that states «Man is much better than us at figuring this out», so this variable should generally be left unset. See .

INFODIR contains a colon-separated list of directories in which the info command searches for the info pages, e.g., /usr/share/info:/usr/local/share/info

TZ can be used to to set a time zone different to the system zone for a user. The zones listed in /usr/share/zoneinfo/ can be used as reference, for example TZ=»:/usr/share/zoneinfo/Pacific/Fiji». When pointing the TZ variable to a zoneinfo file, it should start with a colon per the GNU manual.

Default programs

SHELL contains the path to the user’s preferred shell. Note that this is not necessarily the shell that is currently running, although Bash sets this variable on startup.

PAGER contains command to run the program used to list the contents of files, e.g., /bin/less.

EDITOR contains the command to run the lightweight program used for editing files, e.g., /usr/bin/nano. For example, you can write an interactive switch between gedit under X or nano, in this example:

export EDITOR="$(if ]; then echo 'gedit'; else echo 'nano'; fi)"

VISUAL contains command to run the full-fledged editor that is used for more demanding tasks, such as editing mail (e.g., vi, vim, emacs etc).

BROWSER contains the path to the web browser. Helpful to set in an interactive shell configuration file so that it may be dynamically altered depending on the availability of a graphic environment, such as X:

if ; then
    export BROWSER=firefox
else 
    export BROWSER=links
fi

Using pam_env

The PAM module loads the variables to be set in the environment from the following files: , and .

  • must consist of simple pairs on separate lines, for example:

    EDITOR=nano
  • and share the same following format:

    VARIABLE [DEFAULT=value] [OVERRIDE=value]

    and are special variables that expand to what is defined in . The following example illustrates how to expand the environment variable into another variable:

    XDG_CONFIG_HOME   DEFAULT=@{HOME}/.config

    Note: The variables and are not linked to the and environment variables, they are not set by default. The format also allows to expand already defined variables in the values of other variables using , like this:

    GOPATH DEFAULT=${XDG_DATA_HOME}/go

    pairs are also allowed, but variable expansion is not supported in those pairs. See for more information.

Note: These files are read before other files, in particular before , and .

Автоматическая установка переменных среды

Как уже было сказано, многие программы используют перменные среды, чтобы определить, как им работать. Устанавливать необходимые переменные всякий раз, когда создается новая оболочка, достаточно неудобно. Кроме того, многие переменные устанавливаются сразу же, при входе. Как же устанавливать переменные автоматически?

Это немного сложнее, чем кажется сначала, поскольку bash-оболочка читает множество конфигурационных файлов.

Типы сессий оболочки

Оболочка bash читает разные конфигурационные файлы в зависимости от того, как сессия была запущена. Первые два типа сессий, определяющие оболочку, – это стартовая и дочерняя.

Стартовая, или начальная оболочка (login shell) – это сессия оболочки, которая открывается после авторизации пользователя. Если пользователь входит в терминал или проходит авторизацию при помощи SSH, будет открыта стартовая оболочка.

Если новая сессия запускается из авторизованной (стартовой) сессии (как ранее в примерах запускалась новая bash-оболочка), эта сессия будет дочерней (non-login shell). Чтобы открыть эту сессию, не нужно проходить процедуру авторизации.

Также сессии оболочки бывают интерактивными и неинтерактивными.

Интерактивная сессия оболочки (interactive shell) – это сессия, привязанная к терминалу. Неинтерактивная сессия оболочки (non-interactive shell) – это сессия, не привязанная к терминалу.

Итак, сессии оболочки классифицируются по таким аспектам: стартовая-дочерняя, интерактивная-неинтерактивная.

Обычная сессия, открытая с помощью SSH, как правило, является интерактивной стартовой сессией. Скрипт, запущенный через командную строку, обычно работает в неинтерактивной дочерней сессии. Терминальная сессия – это различные комбинации этих двух свойств.

Классифицируя сессию как стартовую или дочернюю, система понимает, какие файлы нужно читать для инициализации сессии оболочки.

Итак, сначала стартовая сессия получает конфигурации из файла /etc/profile. Затем она ищет конфигурационный файл стартовой оболочки в домашнем каталоге пользователя, чтобы получить определенные пользователем конфигурации.

Такая сессия читает файлы ~/.bash_profile, ~/.bash_login и ~/.profile и не читает остальных файлов.

Дочерняя сессия, в свою очередь, читает /etc/baash.bashrc, а затем пользовательский файл ~/.bash.rc для развертывания среды.

Неинтерактивные оболочки читают переменную среды BASH_ENV и указанный файл, чтобы создать новую среду.

Как задать переменные среды

Как видите, конфигурации разбросаны по разным файлам.

Это делает систему очень гибкой, что полезно в отдельных ситуациях, когда для стартовой и дочерней оболочек нужно установить разные параметры. Все же, для этих оболочек, как правило, используются одинаковые настройки.

К счастью, большинство дистрибутивов Linux указывает конфигурационный файл дочерней оболочки источником конфигураций стартовой оболочки. Это значит, что определить переменные среды обеих сессий можно в конфигурационных файлах дочерней оболочки.

Как правило, для обеих оболочек используются переменные среды, задаваемые пользователем. Это значит, что задать эти переменные можно в файле ~/.bashrc.

Откройте данный файл:

Скорее всего, он уже содержит немного данных. Большинство заданных здесь значений – это параметры bash, не имеющие отношения к переменным среды. Переменные в данном файле задаются точно так же, как и в командной строке:

Внеся все необходимые переменные, закройте файл. При следующем запуске сессии оболочки заданные здесь переменные будут читаться и передаваться среде оболочки. Чтобы сказать текущей сессии читать данный файл, введите:

Чтобы задать общесистемные переменные, внесите их в /etc/profile, /etc/bash.bashrc или /etc/environment.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector