pip list и pip freeze в чем разница?
Бывает, что pip freeze показывать меньше пакетов чем pip list.
KRex ★
09.10.19 22:42:52 MSK
Output installed packages in requirements format. Packages are listed in a case-insensitive sorted order.
List installed packages, including editables. Packages are listed in a case-insensitive sorted order.
Anoxemian ★★★★★
( 09.10.19 22:46:31 MSK )
Ответ на: комментарий от Anoxemian 09.10.19 22:46:31 MSK
Я это читал.
list Список установленных пакетов, включая редактируемые. Пакеты перечислены в порядке сортировки без учета регистра.
Что значит редактируемые?
KRex ★
( 09.10.19 23:16:51 MSK ) автор топика
Ответ на: Я это читал. от KRex 09.10.19 23:16:51 MSK
Упрощенно: обычно при установке содержимое питоновского пакета копируется, для редактируемых (development mode) навешиваются ссылки, поэтому после редактирования пакета его не надо переустанавливать.
lu4nik ★★★
( 09.10.19 23:26:14 MSK )
Ответ на: комментарий от lu4nik 09.10.19 23:26:14 MSK
Протестировал
Создал файл setup.py со следующим содержимым
from setuptools import setup setup(name='tested', py_modules=['tested'])
sudo python3 setup.py develop
И пакет tested стал редактируемым, но он доступ через pip list и через pip freeze, а должен быть виден только из pip list исходя из описания команды.
Управление необходимыми пакетами Python с помощью requirements.txt
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Если вы предоставляете доступ к проекту другим, используете систему сборки или планируете скопировать проект в другое расположение, где нужно восстановить среду, то необходимо указать внешние пакеты, необходимые проекту. Рекомендуется использовать файл requirements.txt (readthedocs.org), содержащий список команд для pip, который устанавливает необходимые версии зависимых пакетов. Наиболее распространенной является команда pip freeze > requirements.txt , которая записывает текущий список пакетов среды в файл requirements.txt.
Технически для отслеживания требований можно использовать любой файл (используя -r при установке пакета), но Visual Studio имеет встроенную поддержку requirements.txt:

- Если вы загрузили проект, содержащий файл requirements.txt, и хотите установить все указанные в нем пакеты, разверните узел Среды Python в обозревателе решений, щелкните правой кнопкой мыши узел среды и выберите Установить из файла requirements.txt:
- Если вы хотите установить зависимости в виртуальном окружении, сначала создайте и активируйте окружение, а затем воспользуйтесь командой Установка из файла requirements.txt. Дополнительные сведения о создании виртуального окружения см. в статье Выбор окружения Python для проекта.
- Если в среде установлены все необходимые пакеты, можно щелкнуть среду правой кнопкой мыши в обозревателе решений и выбрать Создать файл requirements.txt, чтобы создать необходимый файл. Если файл уже существует, отображается запрос с вариантами обновления:



- Replace entire file (Заменить весь файл) удаляет все существующие элементы, комментарии и параметры.
- Обновить существующие записи определяет требования к пакету и обновляет описатели версии в соответствии с установленной версией.
- Update and add entries (Обновить и добавить записи) обновляет имеющиеся требования и добавляет все другие пакеты в конец файла.
Файлы requirements.txt содержат точные версии всех установленных пакетов, и вы можете использовать эти файлы, чтобы зафиксировать требования окружения. Такие версии позволяют легко воспроизвести ваше окружение на другом компьютере. Файлы с требованиями включают пакеты, даже если они были установлены с диапазоном версий, как зависимость от другого пакета или с установщиком, отличным от pip.
Если pip не удается установить пакет, указанный в файле requirements.txt, установка завершается сбоем. В этом случае нужно вручную исключить этот пакет из файла или использовать параметры pip для указания ссылки на устанавливаемую версию пакета. Например, можно использовать pip wheel для компиляции зависимости и добавления параметра —find-links в файл requirements.txt:
C:\Project>pip wheel azure Downloading/unpacking azure Running setup.py (path:C:\Project\env\build\azure\setup.py) egg_info for package azure Building wheels for collected packages: azure Running setup.py bdist_wheel for azure Destination directory: c:\project\wheelhouse Successfully built azure Cleaning up. C:\Project>type requirements.txt --find-links wheelhouse --no-index azure==0.8.0 C:\Project>pip install -r requirements.txt -v Downloading/unpacking azure==0.8.0 (from -r requirements.txt (line 3)) Local files found: C:/Project/wheelhouse/azure-0.8.0-py3-none-any.whl Installing collected packages: azure Successfully installed azure Cleaning up. Removing temporary dir C:\Project\env\build.
См. также
- Управление окружениями Python в Visual Studio
- Выбор интерпретатора для проекта
- Пути поиска
- Справочная информация по окну «Окружения Python»
pip freeze requirements txt
pip freeze requirements.txt — команда, которая позволяет создать текстовый документ, в котором перечислены все установленные и необходимые для работы Python приложения программные пакеты.
Самый распространенный веб-фреймворк на Python — Django, requirements.txt всегда используется при запуске Django на сервере.
Список всех пакетов можно посмотреть выполнив pip freeze — стандартный вывод производится на экран. Обычно эту информацию сохраняют в файл.
Файл оставляется в корне приложения, он оказывается нужен если проект переносится на другой сервер.
Глобальная и локальная установка пакетов через pip
Если команду выполнить авторизовавшись на сервере по ssh она выдаст список модулей установленных с помощью pip в систему глобально.
Приложения обычно запускаются в своём виртуальном окружении и со своим набором модулей. Если используется виртуальное окружение, то прежде всего нужно его активировать.
Когда имя виртуального окружения неизвестно — его можно попробовать найти выполнив в каталоге приложения find . -name activate. activate это бинарный файл активирующий окружение. Имя самого окружения будет на два уровня выше в иерархии каталогов чем файл activate.
Пример приведен на скриншоте:

Здесь окружение называется DjangoProject, оно найдено с помощью find. Затем активировано через source. После активации работа с модулями python выполняется не глобально, а в виртуальном окружении.
На скриншоте ниже представлен пример установки модуля Django в вирутальное окружение DjangoProject.

Через pip freeze выведен список установленных модулей (три из них поставились по зависимостям). Потом вывод сохранен в файл с именем requirements.txt.
Установка модулей из файла в чистое окружение выполняется командой pip install -r requirements.txt
Далее рассмотрим самую распространенную ситуацию при которой может потребоваться pip freeze и requirements.txt — перенос сайта на Django на другой сервер.
Перенос сайта на Django на другой сервер с pip freeze и requirements.txt
На сервере, с которого осуществляется перенос, выполняем следующую команду указывая путь к файлу, в котором будет сохранена информация которая потребуется для корректной работы проекта
Если используется виртуальное окружение — команду нужно выполнять в нем.
Виртуальное окружение для любого проекта можно активировать выполнив source /project-folder/bin/activate
Затем копируются файлы приложения и requirements.txt. При необходимости на новом сервере создается виртуальное окружение. На новом сервере должна быть такая же версия Python и желательно такой же дистрибутив Linux.
Создаются такие же каталоги, виртуальное окружение, настраивается веб-сервер. Примеры настройки веб-сервера можно посомтреть в материалах по ссылкам в конце статьи.
Установка всех пакетов по списку в новое окружение на новом сервере производится при выполнении
Внесение изменений в requirements.txt вручную является не самой лучшей практикой.
Автоматическая установка пакетов из этого файла в большинстве случаев окажется невозможна.
Что может потрбоваться дополнительно именно для Django
Часто после переноса проект запускается, статическое содержимое (изображения, стили) при этом не отдается
Чтобы решить этот вопрос нужно выполнить команду
Она позволяет собрать статику в STATIC_ROOT.
При этом если существуют файлы с одинаковым именем обработан будет только один из них (какой файл использует сайт можно выяснить при помощи findstatic — используется:
django-admin.py findstatic /path/to/the/folder
В выводе будут все файлы изображений, CSS стилей и т.п.; также команду можно запускать с ключом —first .
В этом случае в вывод попадет только первое вхождение, далее поиск прекратится.
В dev режиме проект запускается с указанием файла django-admin.py и имени проекта
python django-admin.py startproject projectname
Для запуска в рабочем режиме обычно используется gunicorn или uwcgi в качестве сервера приложений и Nginx в качестве веб-сервера.
Читайте про запуск проекта на Python с помощью gunicorn и про деплой Flask с uwsgi
Все требования в одном месте – requirements.txt
Обычно для запуска проекта требуется несколько внешних пакетов.
Чтобы каждый раз с болью в сердце не собирать их, список этих пакетов принято поставлять вместе с исходным кодом. Принято селить весь список необходимых пакетов в файле requirements.txt в корне проекта. Формат этого файла простой: по одному пакету на строку.
Заморозка пакетов
У одного пакета обычно много версий. Когда мы просим пип установить пакет, он устанавливает самую свежую из доступных.
Это может привести к проблемам: скажем, проект разрабатывался на версии 1.2. Через полгода потребовалось развернуть его заново, пип установил последнюю версию – 1.5. Эта версия может быть не совместима со старой, тогда код сломается.
Например, такая история была с модулем vk : в версии 1.5 нужно было использовать класс vk.api.APISession , а в версии 2.0 – vk.OAuthAPI . Понятное дело, программа, которая использует не ту версию модуля, ломалась – старого класса-то нет.
Чтобы такого не происходило, пакеты принято замораживать – указывать версию пакета вместе с названием. Пип поддерживает такой синтаксис: модуль==версия .
Вот часть requirements.txt из Девмана:
django==1.10.2 pillow==3.3.0 gunicorn==19.6.0 sorl-thumbnail==12.3 ptpython==0.35
Получить все версии пакетов, установленных на вашем компьютере, можно командой pip freeze :
$ pip freeze django==1.10.2 pillow==3.3.0 gunicorn==19.6.0 sorl-thumbnail==12.3 ptpython==0.35 .
Все зависимости заморозить и в requirements.txt
Установка
Все пакеты из requirements.txt можно установить одним махом, пип такое умеет: pip install -r requirements.txt .
Зависимости зависимостей
К сожалению, правильное заполнение requirements.txt не решает все проблемы с зависимостями и версиями.
Дело в том, что у перечисленных в файле зависимостей есть свои зависимости. Например, модуль vk для своей установки требует модуль requests . Пип установит его сам, незаметно для нас.
Проблема в том, что если модуль requests не заморожен в исходниках модуля vk , через полгода всё опять может сломаться: версия vk будет правильная, а requests – нет.
Эта проблема свойственна большим проектам, у которых десятки зависимостей и сотни неявных зависимостей.
Решение этой проблемы рассмотрим в другой раз. Главное – быть начеку.
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
