Стандартный способ установки зависимостей пакета через pip
pip install -r requirements.txt
плох тем, что при первой же ошибке скачивания пакета или же его зависимости останавливается. С одной стороны это правильно: если нет нужного пакета, то python программа будет неверно работать.
С другой стороны, если нам нужно "оживить" плохо поддерживающийся проект, будет полезно установить хоть часть зависимостей, чтобы уменьшить объём работ по восстановлению.
Устанавливаем по-пакетно в pip из requirements.txt в Linux и MacOS
Самое замечательное, что формат самого файла requirements.txt
чрезвычайно прост: каждая строчка - пакет с правилами для выбора версии без пробелов.
И этот формат поддерживается самой командой pip
.
Поэтому достаточно построчно "скормить"
cat-ом
через xargs
pip
-у сам файл requirements.txt
:
cat requirements.txt | xargs -n 1 pip install
Если же вы используете коментарии в вашем requirements.txt
, то
их можно исключить, используя grep:
grep -v '^#' requirements.txt | xargs -n 1 pip install
Так будут устанавливаться независимо пакет за пакетом, строчка за строчкой из файла зависимостей.
Устанавливаем пакеты в pip из requirements.txt по одному в Windows
Сам подход не сильно отличается от юниксового, но синтаксис у cmd.exe
слегка другой. В частности, если мы хотим всё также прочитать строчку
за строчкой из requirements.txt и выполнить на каждую pip install
,
нам потребуется FOR:
FOR /F %x IN (requirements.txt) DO pip install %x
Ну и вариант с учётом комментариев:
FOR /F %x IN (requirements.txt) DO ( IF NOT # == %x ( pip install %x ) )
Логика схожая - всё также бежим по файлу, но теперь ещё проверяем строку.