🏠 | 💻 IT | Программирование Code | Python | venv |

freeze Python

В этой статье мы обсудим работу с коллегами в виртуальном окружении.

Установку virtualenv мы рассматривали Установка virtualenv а работу в нём - в статье virtualenv venv

Мы находимся в директории virtualenvs и активировали наше виртуальное окружение myvenv

Выполним

python -m pip freeze > requirements.txt
cat .\requirements.txt

certifi==2020.4.5.2 chardet==3.0.4 idna==2.9 requests==2.23.0 urllib3==1.25.9

В файле requirements.txt теперь лежит описание нашего виртуального окружения myvenv, а именно список всех установленных пакетов и их версии.

Если Вы знакомы с nmp этот файл может напомнить Вам package.json

Теперь можно выйти из этого окружения, создать новое и активировать его

deactivate

Создадим новое окружение new_venv, активируем его и посмотрим, какие установлены пакеты.

python -m venv new_venv
nev_venv\Scripts\Activate.ps1
python -m pip list

(new_venv) PS C:\Users\Andrei\virtualenvs> python -m pip list Package Version ---------- ------- pip 19.2.3 setuptools 41.2.0 WARNING: You are using pip version 19.2.3, however version 20.1.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.

Пакета всего два и даже версия pip ниже, чем в предыдущем окружении.

Чтобы установить все пакеты, упомянутые в файле requirements.txt выполним

python -m pip install -r .\requirements.txt

Collecting certifi==2020.4.5.2 (from -r .\requirements.txt (line 1)) Using cached https://files.pythonhosted.org/packages/98/99/def511020aa8f663d4a2cfaa38467539e864799289ff354569e339e375b1/certifi-2020.4.5.2-py2.py3-none-any.whl Collecting chardet==3.0.4 (from -r .\requirements.txt (line 2)) Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl Collecting idna==2.9 (from -r .\requirements.txt (line 3)) Using cached https://files.pythonhosted.org/packages/89/e3/afebe61c546d18fb1709a61bee788254b40e736cff7271c7de5de2dc4128/idna-2.9-py2.py3-none-any.whl Collecting requests==2.23.0 (from -r .\requirements.txt (line 4)) Using cached https://files.pythonhosted.org/packages/1a/70/1935c770cb3be6e3a8b78ced23d7e0f3b187f5cbfab4749523ed65d7c9b1/requests-2.23.0-py2.py3-none-any.whl Collecting urllib3==1.25.9 (from -r .\requirements.txt (line 5)) Using cached https://files.pythonhosted.org/packages/e1/e5/df302e8017440f111c11cc41a6b432838672f5a70aa29227bf58149dc72f/urllib3-1.25.9-py2.py3-none-any.whl Installing collected packages: certifi, chardet, idna, urllib3, requests Successfully installed certifi-2020.4.5.2 chardet-3.0.4 idna-2.9 requests-2.23.0 urllib3-1.25.9 WARNING: You are using pip version 19.2.3, however version 20.1.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.

И проверим что установилось

python -m pip list

Package Version ---------- ---------- certifi 2020.4.5.2 chardet 3.0.4 idna 2.9 pip 19.2.3 requests 2.23.0 setuptools 41.2.0 urllib3 1.25.9 WARNING: You are using pip version 19.2.3, however version 20.1.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.

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

Обратите внимание, что версия pip не изменилась.

python -m pip install requests

Collecting requests Downloading requests-2.23.0-py2.py3-none-any.whl (58 kB) |████████████████████████████████| 58 kB 609 kB/s Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 Downloading urllib3-1.25.9-py2.py3-none-any.whl (126 kB) |████████████████████████████████| 126 kB 2.2 MB/s Collecting chardet<4,>=3.0.2 Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB) |████████████████████████████████| 133 kB 2.2 MB/s Collecting certifi>=2017.4.17 Downloading certifi-2020.4.5.2-py2.py3-none-any.whl (157 kB) |████████████████████████████████| 157 kB 3.2 MB/s Collecting idna<3,>=2.5 Downloading idna-2.9-py2.py3-none-any.whl (58 kB) |████████████████████████████████| 58 kB 1.6 MB/s Installing collected packages: urllib3, chardet, certifi, idna, requests Successfully installed certifi-2020.4.5.2 chardet-3.0.4 idna-2.9 requests-2.23.0 urllib3-1.25.9

Проверим какие пакеты установились

python -m pip list

Package Version ---------- ---------- certifi 2020.4.5.2 chardet 3.0.4 idna 2.9 pip 20.1.1 requests 2.23.0 setuptools 46.4.0 urllib3 1.25.9 wheel 0.34.2

request подтянул за собой ещё четыре пакета: certifi, chardet, idna, urllib3

Проверить куда установился requests в этом окружении можно командоё

python -m pip show requests

Name: requests Version: 2.23.0 Summary: Python HTTP for Humans. Home-page: https://requests.readthedocs.io Author: Kenneth Reitz Author-email: me@kennethreitz.org License: Apache 2.0 Location: c:\users\andrei\virtualenvs\test_env\lib\site-packages Requires: chardet, certifi, urllib3, idna Required-by:

Чтобы выйти из виртуального окружения используем команду

deactivate

Если сейчас выполнить

python -m pip show requests

WARNING: Package(s) not found: requests

Можно увидеть, что глобально requests вообще не установлен

Начиная с версии Python 3.6 рекомендуется создавать виртуальные окружения командой

python -m venv myvenv

Активируется окружение так же

myvenv\Scripts\Activate.ps1

(myvenv) PS C:\Users\Andrei\virtualenvs>

Не знаю как у Вас, а у меня в PowerShell (myvenv), созданный с помощью venv подсвечен зелёным, а test_env, созданный с помощью virtualenv остаётся серым.

requirements.txt

В файл requirements.txt экспортируется список зависимостей.

Под зависимостями мы понимаем пакеты, которые необходимы для работы проекта

У зависимостей могут быть свои зависимости и между ними могут быть конфликты.

Например, Ваш проект зависит от пакетов X и Y. X зависит от Z версии 1.0 а Y от Z версии 2.0 и не рабоатет с Z 1.0. А X в свою очередь не работает с Z 2.0

Что будет в этом случае? Я не берусь сказать, но какую-то версию pip поставит.

Если остались вопросы - смело задавайте их в комментариях.

Поиск по сайту
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: