Переменные среды для python windows

  1. 1. Настройка локальной среды
  2. 2. Получение Python
    1. 1. Платформа Windows
    2. 2. Платформа Linux
    3. 3. Mac OS
  3. 3. Настройка PATH
    1. 1. Настройка PATH в Unix / Linux
    2. 2. Настройка PATH в Windows
    3. 3. Переменные среды Python
    4. 4. Запуск Python
      1. 1. Интерактивный интерпретатор
      2. 2. Скрипт из командной строки
      3. 3. Интегрированная среда разработки

Python 3 доступен для Windows, Mac OS и большинства вариантов операционной системы Linux.

Настройка локальной среды

Откройте окно терминала и введите «python», чтобы узнать, установлен ли он и какая версия установлена.

Получение Python

Платформа Windows

Бинарники последней версии Python 3 (Python 3.6.4) доступны на этой странице

загрузки

Доступны следующие варианты установки.

  • Windows x86-64 embeddable zip file
  • Windows x86-64 executable installer
  • Windows x86-64 web-based installer
  • Windows x86 embeddable zip file
  • Windows x86 executable installer
  • Windows x86 web-based installer

Примечание. Для установки Python 3.6.4 минимальными требованиями к ОС являются Windows 7 с пакетом обновления 1 (SP1). Для версий от 3.0 до 3.4.x Windows XP является приемлемым.


Платформа Linux

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

На Ubuntu Linux Python 3 устанавливается с помощью следующей команды из терминала.

sudo apt-get install python3-minimal

Установка из исходников

Загрузите исходный tar-файл Gzipped с URL-адреса загрузки Python

https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

Extract the tarball
tar xvfz Python-3.5.1.tgz
Configure and Install:
cd Python-3.5.1
./configure --prefix = /opt/python3.5.1
make  
sudo make install

Mac OS

Загрузите установщики Mac OS с этого URL-адреса

https://www.python.org/downloads/mac-osx/

Дважды щелкните этот файл пакета и следуйте инструкциям мастера для установки.

Самый современный и текущий исходный код, двоичные файлы, документация, новости и т.д. Доступны на официальном сайте Python —


Python Official Website

https://www.python.org/

Вы можете загрузить документацию Python со следующего сайта. Документация доступна в форматах HTML, PDF и PostScript.


Python Documentation Website

www.python.org/doc/

Настройка PATH

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

Важными особенностями являются:

  • Путь хранится в переменной среды, которая является именованной строкой, поддерживаемой операционной системой. Эта переменная содержит информацию, доступную для командной оболочки и других программ.
  • Переменная пути называется PATH в Unix или Path в Windows (Unix чувствительна к регистру, Windows — нет).
  • В Mac OS установщик обрабатывает детали пути. Чтобы вызвать интерпретатор Python из любого конкретного каталога, вы должны добавить каталог Python на свой путь.

Настройка PATH в Unix / Linux

Чтобы добавить каталог Python в путь для определенного сеанса в Unix —


  • В csh shell

    — введите setenv PATH «$ PATH:/usr/local/bin/python3» и нажмите Enter.

  • В оболочке bash (Linux)

    — введите PYTHONPATH=/usr/local/bin/python3.4 и нажмите Enter.

  • В оболочке sh или ksh

    — введите PATH = «$PATH:/usr/local/bin/python3» и нажмите Enter.

Примечание.

/usr/local/bin/python3

— это путь к каталогу Python.

Настройка PATH в Windows

Чтобы добавить каталог Python в путь для определенного сеанса в Windows —

  • В командной строке введите путь

    %path%;C:\Python

    и нажмите Enter.

Примечание.

C:\Python

— это путь к каталогу Python.

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

S.No. Переменная и описание
1
PYTHONPATH

Он играет роль, подобную PATH. Эта переменная сообщает интерпретатору Python, где можно найти файлы модулей, импортированные в программу. Он должен включать каталог исходной библиотеки Python и каталоги, содержащие исходный код Python. PYTHONPATH иногда задается установщиком Python.
2
PYTHONSTARTUP

Он содержит путь к файлу инициализации, содержащему исходный код Python. Он выполняется каждый раз, когда вы запускаете интерпретатор. Он называется как .pythonrc.py в Unix и содержит команды, которые загружают утилиты или изменяют PYTHONPATH.
3
PYTHONCASEOK

Он используется в Windows, чтобы проинструктировать Python о поиске первого нечувствительного к регистру совпадения в инструкции импорта. Установите эту переменную на любое значение, чтобы ее активировать.
4
PYTHONHOME

Это альтернативный путь поиска модуля. Он обычно встроен в каталоги PYTHONSTARTUP или PYTHONPATH, чтобы упростить библиотеку модулей коммутации.

Запуск Python

Существует три разных способа запуска Python —

Интерактивный интерпретатор

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

Введите

python

в командной строке.

Начните кодирование сразу в интерактивном интерпретаторе.

$python             # Unix/Linux
or 
python%             # Unix/Linux
or 
C:>python           # Windows/DOS

Вот список всех доступных параметров командной строки —

S.No. Вариант и описание
1
-d

предоставлять отладочную информацию
2
-O

генерировать оптимизированный байт-код (приводящий к .pyo-файлам)
3
-S

не запускайте сайт импорта, чтобы искать пути Python при запуске
4
-v

подробный вывод (подробная трассировка по операциям импорта)
5
-X

отключить встроенные исключения на основе классов (просто используйте строки); устаревший, начиная с версии 1.6
6
-c cmd

запустить скрипт Python, отправленный в виде строки cmd
7
file

запустить скрипт Python из заданного файла

Скрипт из командной строки

Сценарий Python можно запустить в командной строке, вызвав интерпретатор в вашем приложении, как показано в следующем примере.

$python  script.py          # Unix/Linux
or 
python% script.py           # Unix/Linux
or 
C:>python script.py         # Windows/DOS

Примечание. Убедитесь, что права файлов разрешают выполнение.

Интегрированная среда разработки

Вы можете запустить Python из среды графического интерфейса пользователя (GUI), если у вас есть приложение GUI в вашей системе, которое поддерживает Python.

Для разработки Python приложений рекомендую PyCharm от компании JetBrains, как наиболее развитую и удобную IDE.

In this post, you’ll learn about how to use environment variables in Python on Windows, macOS, and Linux. Environment variables in Python enable you to write smoother workflows and more secure code.

You’ll learn why environment variables are useful to learn and how to implement them. You’ll learn how to get and set environment variables in Python. You’ll also learn how to implement Python environment variables safely in source control management tools like Github.

By the end of this tutorial, you’ll have learned:

  • What environment variables in Python are and why you’ll want to use them
  • How to get and set environment variables in Python using Windows, macOS, and Linux
  • How to improve the environment variable workflow with the dotenv library
  • How to safely store environment variables when working with source control management tools like Github

Table of Contents

Python environment variables are variables that exist outside of your code and are part of your system’s or current user’s configurations. Why would you want to use environment variables? Environment variables provide the opportunity to make your code:

  • More streamlined – by not needing to repeat constants such as API keys across multiple files. Similarly, using environment variables gives you the opportunity to configure your code so it can be tailored to a particular user running your code. For example, if your code is used by multiple people, the user’s path can be accessed from the environment.
  • More secure – by not exposing secure keys or user configurations within your code. This allows you to share code that relies on API keys or other secure information without needing to expose that code. This prevents others from ready these secure pieces of information.

Environment variables represent key-value pairs of data that can be accessed by your code. As you’ll learn later, they can be accessed just like any dictionary value.

When To Use Python Environment Variables

Environment variables should be used when a variable changes with the environment (such as when a different user runs the code). This means that the best use cases are when the code would otherwise need manual updating when run in a different environment.

Similarly, environment variables should be used when secure data are implemented in a shared piece of code (or code shared to a source control management tool like Github). This allows you to embed secure information outside the code, while still being able to run your code.

When you first learn about environment variables, it may seem like a good idea to use them for everything. Following the guideline mentioned above sets a good standard for when to use them.

How to Get Environment Variables in Python

Environment variables can be accessed using the os library. In particular, they’re stored in the environ attribute. Because the os package is part of the standard Python library, you don’t need to install anything extra in order to get it to run.

In a later section, you’ll learn how to use the dotenv module to manage environment variables more easily. For now, let’s take a look at how you can get all environment variables using the os library.

How to See All Python Environment Variables

The easiest way to get all the environment variables available is to print out the os.environ attribute. In order to do this, you’ll need to first import the library. Let’s see what this looks like:

# Getting All Environment Variables Using os
import os
print(os.environ)

# Returns:
# environ({'TERM_PROGRAM': 'vscode', ...})

I have truncated the returned value above to make it more readable. Running this on your machine will likely display a large amount of variables.

We can check the type of this variable to see what it is:

# Checking the Type of the os.environ
import os
print(type(os.environ))

# Returns
# <class 'os._Environ'>

In the next section, you’ll learn how to get a single environment variable in Python.

How to Get a Single Environment Variable in Python

Because the returned value of the os.environ attribute is a dictionary-like structure, we can access a particular variable by using its key. For example, if we wanted to get the environment variable for 'USER' we could access it as we would any other dictionary’s value:

# Getting a Single Environment Variable in Python
import os
print(os.environ['USER'])

# Returns: datagy

Now, what would happen if we tried to access a variable that didn’t exist? Let’s try getting the environment variable for 'nonsense':

# Getting an Environment Variable that Doesn't Exist
import os
print(os.environ['nonesense'])

# Returns: KeyError: 'nonsense'

We can see that this raises a KeyError. If we don’t want our program to crash, we can use the .get() method to safely return None if no value exists. Let’s see what this looks like:

# Returning None if No Environment Variable Exists
import os
print(os.getenv('nonsense'))

# Returns: None

In the next section, you’ll learn how to check if an environment variable exists in Python.

How to Check if an Environment Variable Exists in Python

Because the returned value from the os.environ attribute is dictionary-like, you can use the in keyword to check whether or not an environment variable exists in Python. Let’s see how we can check if the variable 'USER' exists on the environment using an if-else block.

# Checking if an Environment Variable Exists in Python
import os

if 'USER' in os.environ:
    print('Environment variable exists!')
else:
    print('Environment variable does not exist.')

# Returns:
# Environment variable exists!

Using this conditional allows you to safely run code to see if an environment variable exists. If the variable doesn’t exist, you could, for example, prompt the user for input before continuing.

In the following section, you’ll learn how to return a default value if one doesn’t exist.

How to Return a Default Value for Environment Variables If One Doesn’t Exist

If no value exists for an environment variable, you may want to pass in a default value. This can also be done by using the .getenv() method. By passing in a second parameter, a default value can be returned if a variable doesn’t exist.

Let’s see what this looks like:

# Returning a Default Value When a Variable Doesn't Exist
import os
print(os.getenv('nonsense', 'default value'))

# Returns: default value

In the next sections, you’ll learn how to set environment variables.

How to Set Environment Variables in Python

Now that you know how to get environment variables using Python, in this section, you’ll learn how to set the values for new or existing variables. Because this process is different for Windows and macOS / Linux, the process is split across two different sections.

How to Set Environment Variables in Python Using macOS And Linux

To set an environment variable in Python using either macOS or Linus is to use the export command in a shell session. For example, if we wanted to set the variable of API_KEY to be equal to '123acb', we could write the following:

# Setting an Environment Variable
export API_KEY = '123abc'

When you run this code in your terminal, the environment variable will be set globally for all programs for that session. When you close your terminal, the environment variables are lost again.

If you only wanted to set the environment variable for a particular script, you can do this as well from the shell command. Simply change the command to this:

# Setting an Environment Variable
API_KEY = '123abc' python myscript.py

How to Set Environment Variables in Python Using Windows

Windows provides very similar ways to set environment variables in Python. Similar to macOS and Linux, you can set the variables for a single session by using the command prompt. Rather than using export, you use the word set. Let’s take a look:

# Setting an Environment Variable
set API_KEY = '123abc'

Instead, if you’re using the PowerShell console, you need to use the following code:

# Using PowerShell to Set an Environment Variable
$Env:API_KEY = '123abc'

In the following section, you’ll learn a much easier way to set and manage environment variables, using the dotenv library.

How to Use dotenv in Python to Work with Environment Variables in Python

Using the terminal or command prompt to manage environment variables can be a time-consuming and, frankly, annoying task. Because of this, Python provides the option to use the dotenv library to better manage environment variables.

The benefit of using the dotenv library is that the process is the same for Windows, macOS, and Linux. The way that this process works is by including a .env file in the project directory that you’re working in. The file will contain the environment variables that you’re hoping to use in your script.

Let’s see how we can use the dotenv library to manage our environment variables better in Python. First, we’ll need to install the dotenv library, which can be done using either pip or conda:

# Install dotenv
pip install python-dotenv
conda install python-dotenv

Once this is done, we need to create the file in the directory. The easiest way to do this is using the terminal:

touch .env

Once this is done, you can open the file, which is really just a text file. From there, you can add all of the environment variables that you want to use. The way that this is done is by placing different variables on new lines and creating the key-value pair by using an equal sign =:

API_KEY=123abc
user_name=Nik

From there, in your Python script it’s as easy as importing the library and loading the file:

# Loading an Environment Variable File with dotenv
from dotenv import load_dotenv
load_dotenv()

The function will search through the current directory for the .env file. If it doesn’t find one, then it continues to move up through the directories to try and find the file.

Similarly, you could simply pass in the full path to the file to make your code more explicit:

# Loading an Environment Variable File Explicitly with dotenv
from dotenv import load_dotenv
load_dotenv('/home/datagy/project/.env')

Using dotenv Safely with Source Control Management Tools

Because environment variables can be used to store sensitive information, it’s important to be mindful of not including them when working with SCM tools like Github. In order to work with these safely, you can add them to a .gitignore file.

In order to make your code more understandable for others, simply add an example .env file to your repository. This allows readers of your code to understand what environment variables must be set.

Conclusion

In this tutorial, you learned all about environment variables in Python. Environment variables provide the ability to elegantly and securely run your code. They provide the opportunity to streamline your code without repeating and changing your code. Similarly, they prevent having to share secure items such as API Keys.

You learned how to get and set environment variables in Python using the os library. You also learned how to use the dotenv library to make managing environment variables much easier in Python.

Additional Resources

To learn more about related topics, check out the tutorials below:

  • Use Python to List Files in a Directory (Folder) with os and glob
  • Python: Get and Change the Working Directory
  • Python: Check if a File or Directory Exists
  • Python Delete a File or Directory: A Complete Guide
  • Python dotenv Official Documentation
  • Introduction
  • The os Module
  • Creating Environment Variables

    • Method One: Creating Environment Variables Via The Operating System
    • Linux and macOS
    • Windows
    • Method Two: Creating Environment Variables Using Python
  • Getting Environment Variables With The OS Module

    • Example One: Working With A String
    • Example Two: Working With A Number
    • Example Three: Working With A Boolean
  • Conclusion
  • References

Introduction

Environment variables are used in a program to set the values of variables or constants within that program. The environment variables exist at the operating system level. This allows for the environment variables to be fluid in that they can be changed for different stages of the software development lifecycle without storing / changing the values in the source code for each stage (dev / test / production).

From a security perspective, it means that the source code does not have the values of its variables hard-coded into them. An example of this would be storing an API key as an environment variable instead of setting the value in a variable / constant in the source code. If that happened and was then sent up to a public (or even a private) Git repository, that would be a major security threat.

The os Module

For Python to interact with the operating system, the os module is used. It can perform actions such as:

  • Creating and reading environment variables.
  • Getting details about the operating system, such as the type of operating system it is.
  • Working with files and file paths.

There are a lot more that it can do, which is covered in the modules documentation.

So how can environment variables be created and used?

Creating Environment Variables

First up, let’s create some environment variables to work with. There are multiple ways to do this, but this article will focus on two. The first of which is to create them via the operating system with the second being via Python using os.environ.

Three example environment variables will be created, each with a different data type.

For both methods:

  • EXAMPLE_ONE is just a string of text. This is a typical use case for most data that would be assigned to an environment variable.
  • EXAMPLE_TWO is a number. Or is it? More on that later.
  • EXAMPLE_THREE is a boolean. Or perhaps not. Again, more on that later.

Method One: Creating Environment Variables Via The Operating System

NOTE: On Linux / macOS, if the string has spaces in it, the string will need to be wrapped in "", otherwise only the text up to the first space will be assigned. Windows is fine without them.

Linux and macOS

Using a terminal emulator app, run:

export EXAMPLE_ONE="This is an environment variable"
export EXAMPLE_TWO=1
export EXAMPLE_THREE=False

Enter fullscreen mode

Exit fullscreen mode

If an environment variable needs to be persistent for Linux or macOS, it will need to be added to the users .bashrc or .zshrc file in their home directory using the same syntax.

Windows

Using the command prompt (cmd.exe), run:

set EXAMPLE_ONE=This is an environment variable
set EXAMPLE_TWO=1
set EXAMPLE_THREE=False

Enter fullscreen mode

Exit fullscreen mode

To set persistent environment variables in Windows, use the setx command with the syntax being:

setx EXAMPLE_ONE "This is an environment variable"
setx EXAMPLE_TWO "1"
setx EXAMPLE_THREE "False"

Enter fullscreen mode

Exit fullscreen mode

Method Two: Creating Environment Variables Using Python

For all three operating system types, the method is the same in Python by using os.environ:

import os


os.environ["EXAMPLE_ONE"] = "This is an environment variable"
os.environ["EXAMPLE_TWO"] = "1"
os.environ["EXAMPLE_THREE"] = "False"

Enter fullscreen mode

Exit fullscreen mode

NOTE: When Python is closed, these environment variables will be removed.

Getting Environment Variables With The OS Module

There are two methods that can be used to access an environment variable using the os module. The first method is via os.environ. It requires the environment variable name to be passed to it in a list. For example:

import os


print(os.environ["EXAMPLE_ONE"])

Enter fullscreen mode

Exit fullscreen mode

Output:

This is an environment variable

Enter fullscreen mode

Exit fullscreen mode

There is one downside to this method, which is open to interpretation. If the environment variable is not present, it will raise a KeyError and cause a hard stop. An example of this is shown below:

Traceback (most recent call last):
  File "/Users/neil/Documents/writing/blog-posts/code.py", line 11, in <module>
    print(os.environ["EXAMPLE_ONE"])
                ~~~~~~~~~~^^^^^^^^^^^^^^^
  File "<frozen os>", line 679, in __getitem__
KeyError: 'EXAMPLE_ONE'

Enter fullscreen mode

Exit fullscreen mode

Now, this might be what is required to happen, which is fine. But let’s say that it isn’t and the code needs to continue. To get around this, os.getenv is a useful solution. What this will do is instead of erroring out, it will set the value to None for any missing environment variables instead.

For the examples going forward, the os.getenv method will be used.

Example One: Working With A String

The first example will get the value or the EXAMPLE_ONE environment variable and show its value.

import os


example_one = os.getenv("EXAMPLE_ONE")
print(f"Example One Value: {example_one}")
print(type(example_one))

Enter fullscreen mode

Exit fullscreen mode

Output:

Example One Value: This is an environment variable
<class 'str'>

Enter fullscreen mode

Exit fullscreen mode

From the output, the value of example_one is shown and it has a data type of str (string).

Example Two: Working With A Number

This is where things get problematic. Remember how Example Two was described earlier («EXAMPLE_TWO is a number. Or is it?»). Well, although it looks like a number, it is actually a string data type. This is because environment variables are treated as strings, no matter what the value is.

For example, let’s access the EXAMPLE_TWO environment variable and see what data type it has:

import os


example_two = os.getenv("EXAMPLE_TWO")
print(f"Example Two Value: {example_two}")
print(type(example_two))

Enter fullscreen mode

Exit fullscreen mode

Output:

Example Two Value: 1
<class 'str'>

Enter fullscreen mode

Exit fullscreen mode

As can be seen, the data type class is str (string). So how can the value be used as a number, in this case an integer? It is done by enforcing the data type to the example_two variable using the int class. For example:

import os


example_two = int(os.getenv("EXAMPLE_TWO"))
print(f"Example Two Value: {example_two}")
print(type(example_two_int))

Enter fullscreen mode

Exit fullscreen mode

Output:

Example Two Value: 1
<class 'int'>

Enter fullscreen mode

Exit fullscreen mode

The output looks the same but the data type for example_two is now an integer (int). This will now allow it to be used for any mathematical operations.

There is one further issue. What if the environment variable is not an integer number but rather a string, float, boolean or just doesn’t exist?

If it doesn’t exist, the value would be set to None. If it did exist and is not an integer, it would be set to that value. But, as the data type is enforced as an integer, a ValueError would be raised for both cases.

A solution for this would be to use the try block to check it.

The following example will check the value of EXAMPLE_TWO and if it can’t be set to an integer data type due to the value not being an integer, it will set example_two to 0:

First, change EXAMPLE_TWO to a non-number-based value:

Operating system method:

export EXAMPLE_TWO="I am not a number"

Enter fullscreen mode

Exit fullscreen mode

Or via Python:

import os


os.environ["EXAMPLE_TWO"] = "I am not a number"

Enter fullscreen mode

Exit fullscreen mode

Next, use the try block to check and set the value of example_two:

import os


try:
    example_two_int = int(os.getenv("EXAMPLE_TWO"))

except ValueError:
    example_two_int = 0

print(f"Example Two Value: {example_two_int}")
print(type(example_two_int))

Enter fullscreen mode

Exit fullscreen mode

Output:

Example Two Value: 0
<class 'int'>

Enter fullscreen mode

Exit fullscreen mode

As EXAMPLE_TWO was not a numeric value, a ValueError was raised and as a result, the value of example_two was set to 0.

Example Three: Working With A Boolean

Just as in example two, an environment variable with what looks like a boolean value will have a string data type. This will mean that it cannot be used for boolean operations.

One of the additional issues with boolean values is how they can be presented. For example, in Python a boolean value is set to either True or False. In other languages, such as JavaScript, they are set to either true or false. There are others, such as yes / no, y / n, 0 / 1 or on / off.

So, how can we set a boolean data type when there are a lot of possible ways that an environment variable can be set with a boolean value? This is actually easy to do with Python. Start by putting as many of the possible ways to present a True value in a list and compare the value that is assigned to the environment variable. If the value matches one of the entries in the list, the value of the variable will be set to True. If not, it will be False.

For example, set a False boolean value:

import os


example_three = os.getenv("EXAMPLE_THREE") # --- Currently set to "False"
example_three = example_three.lower() in ["true", "1", "1.0", "y", "yes", "on"]
print(f"Example Three Value: {example_three}")
print(type(example_three))

Enter fullscreen mode

Exit fullscreen mode

Output:

Example Three Value: False
<class 'bool'>

Enter fullscreen mode

Exit fullscreen mode

In the above example, the value of example_three was converted to all lowercase to make it easier to check against and then compared to each entry in the list. As it didn’t match, the new value of example_three is False but with a data type class of bool, which is what is needed.

Conclusion

I hope that this article was useful. There will be a follow up article to this that will cover using .env files for creating environment variables.

Thank you for reading and have a nice day!

References

Python os module documentation.

Environment variables provide a great way to configure your Python application, eliminating the need to edit your source code when the configuration changes. Common configuration items that are often passed to application through environment variables are third-party API keys, network ports, database servers, and any custom options that your application may need to work properly.

In this article I’m going to share some of the techniques and tools available in Python to work with environment variables.

How to access environment variables from Python

Using the os.environ dictionary

In Python, the os.environ dictionary contains all the environment variables. The simplest way to retrieve a variable from inside your application is to use the standard dictionary syntax. For example, this is how you can access an environment variable named USER:

>>> import os
>>> user = os.environ['USER']
>>> user
'miguel'

Using this method, if you try to import an environment variable that doesn’t exist Python will raise a KeyError exception:

>>> database_url = os.environ['DATABASE_URL']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/miguel/.pyenv/versions/3.8.6/lib/python3.8/os.py", line 675, in __getitem__
    raise KeyError(key) from None
KeyError: 'DATABASE_URL'

Using os.environ.get()

Getting the KeyError is a good idea for environment variables that your program requires, but there are situations where you may want to allow some variables to be optional. To avoid the error you can use the dictionary’s get() method, which returns None when the requested key does not exist in the dictionary:

>>> database_url = os.environ.get('DATABASE_URL')

Adding a default value if the variable is not defined

If you’d like to provide a default value for the missing variable that is not None, you can add it as a second argument:

>>> database_url = os.environ.get('DATABASE_URL', 'sqlite:///')
>>> database_url
'sqlite:///'

Using the os.getenv() function

Python also provides the os.getenv() function to access environment variables. This function works in a very similar way to the os.environ.get() method. Here is how to access a variable with it:

>>> user = os.getenv('USER')
>>> user
'miguel'

This function does not raise an error for missing variables, it returns None just like os.environ.get(). And it also accepts a second argument with a custom default value:

>>> database_url = os.getenv('DATABASE_URL', 'sqlite://')
>>> database_url
'sqlite://'

Is os.getenv() better than os.environ? That is really up to you. I personally prefer to use the os.environ dictionary, since it gives me the option of halting the program with a KeyError if a required variable is missing.

How to set environment variables

In this section I’m going to give you a quick summary of how to set environment variables in a terminal or command prompt window. If you want to know all the possible ways to set environment variables, my colleague Dominik Kundel has written a very detailed blog post on this subject titled How to Set Environment Variables.

Unix and MacOS

There are two basic ways to set an environment variable from a bash or zsh terminal session. One is using the export keyword:

A variable that is set in this way will be passed on to any programs or scripts that you start from this terminal session. Keep in mind that environment variables are not saved anywhere outside of the context of the shell session, so they will go away when you close the terminal session.

An alternative way to define an environment variable is to set it in the same line where the target application is executed:

DEBUG=true python my_cool_application.py

This second form has the benefit that the variable is only set in the environment space of the intended application.

Microsoft Windows

If you are using Windows you have a few options. If you are interested in setting environment variables via the control panel, see the article linked above.

If you are in a command prompt window, you can set an environment variable using the set command:

Like in the Unix case, the variable is not stored or remembered beyond the current session.

If you are using the newer PowerShell console, the syntax for setting environment variables is completely different:

Finally, if you are using a Unix compatibility layer such as WSL or Cygwin, then you must go to the Unix section above and use any of the methods listed there for bash or zsh.

Using .env files

Are you confused by all the different ways to set environment variables? I personally find it inconvenient that each platform or shell requires a different procedure.

In my opinion, a better way to manage your environment variables is to store them in a .env (pronounced dot env) file. A .env file is a text file in which the variables are defined, one per line. The format of a .env file is exactly the same under all operating systems, so .env files make working with environment variables uniform across all platforms. And as if this isn’t enough, having your environment variables written in a file that is automatically imported by Python means that you don’t have to manually set them every time you start a new shell.

Here is a short .env file example with two variables:

DEBUG=true
DATABASE_URL=sqlite:///mydb.sqlite

You can create a .env file in the root directory of each of your projects, and that way you can keep all the variables that are needed by each project neatly organized!

The python-dotenv package allows a Python application to import variables defined in a .env file into the environment. You can install python-dotenv in your virtual environment using pip:

pip install python-dotenv

Below you can see how to import a .env file into a Python application:

>>> from dotenv import load_dotenv
>>> load_dotenv()

The load_dotenv() function will look for a file named .env in the current directory and will add all the variable definitions in it to the os.environ dictionary. If a .env file is not found in the current directory, then the parent directory is searched for it. The search keeps going up the directory hierarchy until a .env file is found or the top-level directory is reached.

If you want to prevent python-dotenv from searching for a .env file through your directories, you can pass an explicit path to your file as an argument to load_dotenv():

>>> from dotenv import load_dotenv
>>> load_dotenv('/home/miguel/my_project/.env')

There are some additional arguments that you can use when you call the load_dotenv() function. If you want to learn about them consult the documentation.

Once the .env file is imported, you can access environment variables using any of the methods shown above.

A note about .env file security

In many cases you will be adding environment variables that contain sensitive information to your .env files, like passwords or API keys. For that reason, in general you do not want to add these files to your project’s source control repository.

The standard practice is to add an exception for files with this name, so that they are not committed to source control by mistake. For git, you can add a line with the name of the file to the .gitignore file in the root of your repository.

But if you cannot commit the .env file, how do you tell users of the project which variables need to be set? For this you can add an example .env file to your repository with a name such as .env.example, that contains the list of variables that the project requires, but without including their values. This serves as guidance for users of your project, without giving away sensitive information.

Conclusion

I hope this article was useful to help you understand how to use environment variables to configure your Python projects.

Do you have any other ways to work with environment variables? I’d love to know!

Miguel Grinberg is a Python Developer for Technical Content at Twilio. Reach out to him at mgrinberg [at] twilio [dot] com if you have a cool Python project you’d like to share on this blog!

In Python, its behavior is highly influenced by the setup of the environment variables.  There is a fixed number of environment variables that Python recognizes and these generally are processed before the command line switches. Whenever a conflict arises between the environmental variable and the command line switches, the environment variable gets overridden.

Different Environment variable 

In this article, we will explore some of the most prominent environment variables in Python.

PYTHONPATH

It is used to set the path for the user-defined modules so that it can be directly imported into a Python program. It is also responsible for handling the default search path for Python Modules. The PYTHONPATH variable holds a string with the name of various directories that needs to be added to the sys.path directory list by Python. The primary use of this variable is to allow users to import modules that are not made installable yet. 

PYTHONHOME

This variable is used to set the default location of the standard Python libraries. By Default, Python searches for its libraries in prefix/lib/pythonversion and exec_prefix/lib/pythonversion. Here the prefix and exec_prefix are installation-dependent directories, and both of them default to /usr/local.

PYTHONSTARTUP

Whenever the python interpreted is first initialized Python looks for a readable file with the name .pythonrc.py in Unix and executes the commands inside it. The path to the same file is stored in the PYTHONSTARTUP variable. These files are responsible for setting up the PYTHONPATH.

PYTHONINSPECT

If the PYTHONINSPECT variable is an empty string, it compels python to enter into an interactive python-mode and ignore the PYTHONSTARTUP files.  It can also make changes to the Python code and force it to enter the inspect mode on program termination. It is equivalent to using the -i command-line option.

PYTHONCASEOK

This environment variable is used to ignore all import statements while calling the Python interpreter. In a Windows machine, it is used to find the first case-insensitive match in an import statement.

PYTHONVERBOSE

If this variable is set to an empty string, it prints a message every time a module is initialized showing the location of the file or the module from where it has been loaded. It also generates information on module cleanup at the termination of the python program.

The above variables are the primary environment variables that are frequently used.

Ways of executing code in Python

There are 3 standard ways of using Python, namely:

  1. Using Interactive Mode
  2. Using Command-line
  3. Using an Integrated Development Environment (IDE)

Let’s explore them in detail.

Using Interactive mode:

In this mode, you basically call the Python interpreter and throw a bunch of commands to it to execute. To enter into the interactive mode of Python use the below commands:

$python # Unix/Linux
or
python% # Unix/Linux
or
C:> python # Windows/DOS

Example:

Here we will enter the interactive mode and ask Python to solve a simple computation. Look at the image below:

Using command-line:

In this method of using python, you need to call the python interpreter first and then ask it to run a python file.

Example:

Let’s make a python file that simply computes the sum of 5 and 10 and returns the result and save it as gfg.py file. This would look somewhat like the below:

Now execute the file by using the below command:

python gfg.py

This will result in the following:

Using an IDE

There are plenty of IDEs available on the internet like VScode, Sublime editor, and pycharm, etc. Here we will demonstrate the use of python using Jupyter Notebook, a python IDE from Anaconda.

Example:

Here we will write a simple python code and ask the IDE to execute it in Python.

Now if you hit the Run Button on the IDE it will call for the interpreter automatically and execute the program. This would look like below:

Last Updated :
01 Oct, 2020

Like Article

Save Article

  • Перенос windows server 2016 на другое железо
  • Перенести профили пользователей на другой диск windows server 2016
  • Переменные среды в командной строке windows
  • Перенос windows 10 на другой диск бесплатно
  • Переключение между наушниками и динамиками windows 10