Список блокировок
Сравнение выходов показывает различия:
[email protected]:~$ pip list
feedparser (5.1.3)
pip (1.4.1)
setuptools (1.1.5)
wsgiref (0.1.2)
[email protected]:~$ pip freeze
feedparser==5.1.3
wsgiref==0.1.2
Состояние документации по протоколу
freeze Output installed packages in requirements format.
list List installed packages.
но что такое "формат требований" и почему pip list
генерирует более полный список, чем pip freeze
?
Ответы
Ответ 1
Когда вы используете virtualenv
, вы можете указать файл requirements.txt
для установки всех зависимостей.
Типичное использование:
$ pip install -r requirements.txt
Пакеты должны быть в определенном формате для pip
, чтобы понять, что
feedparser==5.1.3
wsgiref==0.1.2
django==1.4.2
...
Это "формат требований".
Здесь django==1.4.2
подразумевает установку django
version 1.4.2
(хотя последнее - 1.6.x).
Если вы не укажете ==1.4.2
, будет установлена последняя версия.
Вы можете прочитать больше в разделе Virtualenv and pip Basics",
и официальную документацию Формат файла требований.
Ответ 2
Чтобы ответить на вторую часть этого вопроса, два пакета, показанные в pip list
но не pip freeze
- это setuptools
(который является easy_install) и сам pip
.
Похоже, что pip freeze
просто не отображает пакеты, от которых зависит сам выбор. Вы можете использовать флаг --all
чтобы показывать также эти пакеты.
Из документации:
--all
Не пропускайте эти пакеты на выходе: pip, setuptools, distribute, wheel
Ответ 3
Посмотрите документацию pip, в которой описываются функциональные возможности обоих:
список пикетов
Список установленных пакетов, включая редактируемые.
замораживание контура
Вывести установленные пакеты в формат требований.
Итак, существуют две отличия:
-
Формат вывода freeze
дает нам стандартный формат требований, который может быть использован позже с pip install -r
для установки требований.
-
Выходной контент pip list
включает редактируемые файлы, которые pip freeze
не поддерживает.
Ответ 4
Основное различие заключается в том, что вывод pip freeze
может быть сброшен в файл requirements.txt и позже использован для повторной конструкции "замороженной" среды.
Другими словами, вы можете запустить: pip freeze > frozen-requirements.txt
на одном компьютере, а затем на другом компьютере или в чистой среде, которую вы можете сделать: pip install -r frozen-requirements.txt
и вы Получите идентичную среду с теми же зависимостями, которые были установлены так же, как и в исходной среде, где вы создали замороженный -r equirements.txt.