Обычно вы изменяете свое окружение Python внутри оболочки. Очень часто это бывает bash оболочка, но это может и командная строка windows.
Несколько слов о том, для чего используется виртуальное окружение.
Виртуальное окружение полностью устанавливает свою собственную среду Python. Она отделена от системной среды Python, что означает, что вы можете экспериментировать с различными пакетами Python, не переустанавливая системный Python.
Кроме того, пакет Python может быть связан с пакетами, которые сами по себе должны иметь конкретную версию. В основном это происходит потому, что программное обеспечение развивается, и иногда необходимо сосредоточиться на определенной версии. Например, библиотека Django, разработчики которой отказались от поддержки PostgreSQL 9.1, и поддерживает версии начиная с PostgreSQL 9.2. Подробно об этом можно прочитать здесь. При этом может случиться так, что для других проектов Вам нужна именно версия 9.1.
Некоторые программисты используют определенные версии библиотек, потому что с ними более удобно или привычно работать.
То есть – если Вы работаете с несколькими проектами, для которых нужны разные версии разных приложений – Вам не нужно каждый раз все переустанавливать, а просто создать виртуальное окружение, необходимое для конкретного проекта. Ну а для того, чтобы знать, какие приложения и версии нужны для проекта, создается файл requirements.txt. В нем Вы можете увидеть список всех пакетов и их версий, которые нужно установить в виртуальном окружении для конкретного проекта.
Создание виртуального окружения – очень полезная особенность Python, и его использование очень помогает при работе с проектами.