Как установить пакеты с помощью pip в соответствии с файлом needs.txt из локального каталога? - PullRequest
876 голосов
/ 29 августа 2011

Вот проблема

У меня есть файл require.txt, который выглядит так:

BeautifulSoup==3.2.0
Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09
Pygments==1.4
SQLAlchemy==0.7.1
South==0.7.3
amqplib==0.6.1
anyjson==0.3
...

У меня есть локальный архивный каталог, содержащий все пакеты + другие.* Я создал новый virtualenv с

bin/virtualenv testing

после его активации, я попытался установить пакеты в соответствии с файл needs.txt из каталога локального архива.вывод, который, кажется, указывает на то, что установка в порядке

Downloading/unpacking Fabric==1.2.0 (from -r ../testing/requirements.txt (line 3))
  Running setup.py egg_info for package Fabric
    warning: no previously-included files matching '*' found under directory 'docs/_build'
    warning: no files found matching 'fabfile.py'
Downloading/unpacking South==0.7.3 (from -r ../testing/requirements.txt (line 8))
  Running setup.py egg_info for package South
....

Но более поздняя проверка показала, что ни один из пакетов не установлен правильно.Я не могу импортировать пакет, и ничего не найдено в каталоге site-packages моего virtualenv.Так что же пошло не так?

Ответы [ 10 ]

1175 голосов
/ 24 марта 2013

Я прочитал выше, понимаю, что это старый вопрос, но он полностью не решен и все еще находится в верхней части моих результатов поиска в Google, так что вот ответ, который работает для всех:

pip install -r /path/to/requirements.txt
606 голосов
/ 03 мая 2012

Это работает для меня:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages

--no-index - Игнорировать индекс пакета (вместо просмотра только --find-links URL).

-f, --find-links <URL> - Если URL-адрес или путь к html-файлу разбираются на наличие ссылок на архивы.Если локальный путь или file:// URL - это каталог, ищите архивы в списке каталогов.

115 голосов
/ 26 февраля 2014

Чтобы virtualenv установил все файлы в файл needs.txt.

  1. перейдите в каталог, где расположен файл require.txt
  2. активируйте свой virtualenv
  3. запустить: pip install -r requirements.txt в вашей оболочке
49 голосов
/ 24 января 2016

У меня была похожая проблема.Я попробовал это:

pip install -U -r requirements.txt 

(- U = обновить, если оно уже установлено)

Но проблема продолжалась.Я понял, что некоторые из общих библиотек для разработки были упущены.

sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk

Я не знаю, поможет ли это вам.

23 голосов
/ 16 сентября 2016
pip install -r requirements.txt

Для получения более подробной информации, пожалуйста, проверьте опцию справки.

pip install --help

Мы можем найти опцию '-r'

-r, --requirement Установить из файла заданных требований. Эта опция может быть используется несколько раз.

Дополнительная информация о некоторых часто используемых опциях установки pip: (Это опция справки в команде pip install)

enter image description here

Также выше приведен полный набор опций. Пожалуйста, используйте pip install --help для получения полного списка опций.

15 голосов
/ 22 сентября 2015

Часто вам понадобится быстрая установка из локальных архивов без проверки PyPI.

Сначала загрузите архивы, соответствующие вашим требованиям:

$ pip install --download <DIR> -r requirements.txt

Затем установите с помощью –find-links и –no-index:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt
9 голосов
/ 11 декабря 2018

Краткий ответ

pip install -r /path/to/requirements.txt

или в другой форме:

python -m pip install -r /path/to/requirements.txt

Объяснение

Здесь -r является краткой формой --requirement и просит pip установить из указанного файла requirements.

pip начнет установку только после проверки наличия всех перечисленных элементов в файле requirements и не начнет установку, даже если один requirement недоступен.

Одним из обходных путей для установки доступных пакетов является установка перечисленных пакетов по одному. Используйте следующую команду для этого. Появится предупреждение красного цвета, чтобы уведомить вас о недоступных пакетах.

cat requirements.txt | xargs -n 1 pip install

Чтобы игнорировать комментарии (строки, начинающиеся с #) и пустые строки, используйте:

cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
9 голосов
/ 23 марта 2017

Я работаю со многими системами, которые были взломаны разработчиками, «следуя указаниям, которые они нашли в Интернете». Очень часто ваши pip и ваши python не ищут одинаковые пути / пакеты сайтов. По этой причине, когда я сталкиваюсь со странностью, я начинаю с этого:

$ python -c 'import sys; print(sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']

$ pip --version
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)

Это счастливая система .

Ниже приведена несчастная система . (Или, по крайней мере, это блаженно невежественная система, которая заставляет других быть несчастными.)

$ pip --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)

$ python -c 'import sys; print(sys.path)'
['', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages']

$ which pip pip2 pip3
/usr/local/bin/pip
/usr/local/bin/pip3

Это несчастный , потому что pip (python3.6 и) использует /usr/local/lib/python3.6/site-packages, а python (python2.7 и) использует /usr/local/lib/python2.7/site-packages

Когда я хочу убедиться, что я устанавливаю требования к right python, я делаю это:

$ which -a python python2 python3
/usr/local/bin/python
/usr/bin/python
/usr/local/bin/python2
/usr/local/bin/python3

$ /usr/bin/python -m pip install -r requirements.txt

Вы слышали: «Если это не сломано, не пытайтесь это исправить». Версия DevOps: «Если вы не сломали его и можете обойти его, не пытайтесь это исправить».

7 голосов
/ 28 января 2019

попробуйте

python -m pip install -r requirements.txt
6 голосов
/ 10 ноября 2017

Установка файла needs.txt в виртуальной среде env с python 3:

У меня была такая же проблема.Я пытался установить файл needs.txt в виртуальной среде.Я нашел решение.

Изначально я создал свою виртуальную среду следующим образом:

virtualenv -p python3 myenv

Активируйте среду, используя:

source myenv/bin/activate

Теперь я установил требования.txt с использованием:

pip3 install -r requirements.txt

Установка прошла успешно, и я смог импортировать модули.

...