Як встановити пакети за допомогою pip відповідно до файлу вимог.txt з локального каталогу?


1082

Ось проблема

У мене є вимога.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
...

У мене є локальний каталог архівів, який містить усі пакунки + інші.

Я створив новий віртуаленв з

bin/virtualenv testing

після його активації я спробував встановити пакунки відповідно до вимог.txt з каталогу локального архіву.

source bin/activate
pip install -r /path/to/requirements.txt -f file:///path/to/archive/

Я отримав деякий вихід, який, схоже, вказує на те, що встановлення нормально

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
....

Але пізніша перевірка виявила, що жоден пакет не встановлений належним чином. Я не можу імпортувати пакунок, і жоден не знайдений у каталозі сайтів пакунків мого virtualenv. То що пішло не так?


4
Ви намагалися використовувати, --no-indexщоб він навіть не дивився на PyPI?
— Уго Таварес

2
Ви відірвали повідомлення про помилку. Це, як правило, біля дна.
— bukzor

Ви можете використовувати шляхи до файлів замість імен пакунків, це означає, що вам доведеться змінити файл вимоги.txt, але зберегти команду встановлення pip такою ж.
— asafge

9
Найбільш голосована відповідь (одна Майка Ліонса) навіть не відповідає на запитання . Чи можете ви прийняти відповідь кодексу, яка є правильною?
— Пьотр Доброгост

2
здивував, що ніхто більше не пов’язаний, крім pip.pypa.io/en/stable/user_guide/#requirements-files
— MrMesees

Відповіді:


785

Це працює для мене:

$ 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-адреса - це каталог, шукайте архіви в списку каталогів.


7
Інформація про --no-indexкомандний піп допомагає встановити --no-index індекс Ігнорувати пакет ( --find-linksзамість цього переглядаючи лише URL-адреси). Інформація про --find-linksкомандний pip допоможе встановити -f , --find-links <url>Якщо URL-адреса або шлях до html-файлу, то розберіть посилання на архіви. Якщо локальний шлях або файл: // url - це каталог, то шукайте архіви в списку каталогів.
— AWrightIV

1
//, Це може бути дуже елегантним рішенням, особливо з огляду на вічну боротьбу з вендорізацією: bitprophet.org/blog/2012/06/07/on-vendorizing
— Натан Басанес

Обережно з цим ви можете, pip install <some_module>не використовуючи, requirements.txtале це не оновиться requirements.txt. Альтернативою може бути оновлення докера таким чином, щоб воно перераховувало всі команди встановлення pip, які виконуються для встановлення залежностей.
— амперсанд

Я спробував це, python -m pip install -r requirements.txtколи всередині активованого оточення Венв. все встановлено гладко, але коли я роблю піп-лист, він не показує, що пакунки, коли я перебуваю в активному Венве або навіть після деактивації ВНЕВ. також не в змозі використовувати ці пакети. не знаю, що тут не так
— Shreyan Mehta

Ви впевнені, що pythonстосується виконуваного файлу python ( $ which python) активованого середовища ?
— кодап

1363

Я прочитав вище, зрозумів, що це давнє запитання, але це абсолютно не вирішено і все ще знаходиться на вершині моїх результатів пошуку в Google, тож ось відповідь, яка працює для всіх:

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

284
Я усвідомлюю, що ця відповідь не стосується початкового питання, але відповідає на питання, яке виникло, коли я виявив це в Google ...
— Джонатан

Оригінальне запитання змінилося - зауважте, як він зараз використовує /path/to/requirements.txt.
— Майк Ліонс

8
@MikeLyons впевнений, що питання насправді не змінилося - історії редагування немає.
— Марк Амері

48
для тих, хто любить знати, що вони вводять, команда -r просто означає «встановити з файлу вимог», і це ярлик для --requirement
— Florent Chatterji

2
Коли я хочу оновити пакет (наприклад, Django), я змінюю версію у своєму файлі вимог.txt, а потім запускаю pip install -r /path/to/requirements.txt. Це виявляє зміни, оновляє пакет і залишає все інше.
— Користувач

129

Щоб virtualenv встановив усі файли у файлі вимоги.txt.

  1. cd в каталог, де розміщено Requires.txt
  2. активуйте свою віртуолв
  3. запустити: pip install -r requirements.txt у своїй оболонці

3
"pyenv virtualenv pip install settings.txt не працює" заради Google ...
— Jerad

Це працює для мене замість інших відповідей, ти
— Джо Еарк

58

У мене була схожа проблема. Я спробував це:

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

Я не знаю, чи допоможе вам це.


32
pip install -r requirements.txt

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

pip install --help

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

-r, - вимога Встановіть із заданого файлу вимог. Цей параметр можна використовувати кілька разів.

Додаткова інформація про деякі часто використовувані параметри встановлення pip: (Це варіант довідки для команди встановлення pip)

введіть тут опис зображення

Також вище - це повний набір варіантів. Будь ласка, використовуйте pip install --help для повного переліку параметрів.


26

Коротка відповідь

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

20

Часто вам потрібно швидко встановити з місцевих архівів, не перевіряючи PyPI.

Спочатку завантажте архіви, які відповідають вашим вимогам:

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

Потім встановіть, використовуючи –find-linksта –no-index:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt

no such option: --download
— Макс Малиш

12

Я працюю з безліччю систем, які розробники вимкнули, "дотримуючись вказівок, які вони знайшли в Інтернеті". Вкрай часто зустрічається те, що ваш 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

Коли я хочу переконатися, що я встановлюю вимоги до правильного пітона, я роблю це:

$ 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 про це: "Якщо ви не зламали її і можете обійти її, не намагайтеся це виправити".


10

насамперед, створити віртуальне середовище

в пітоні 3.6

virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>

в пітоні 2.7

virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>

потім активізуйте середовище та встановіть усі наявні пакети у файлі requ.txt.

source <path/to/new/virtualenv>/bin/activate
pip install -r <path/to/requirement.txt>

9

Встановлення вимоги файл.txt у віртуальний env з python 3:

У мене було те саме питання. Я намагався встановити файл вимоги.txt всередині віртуального середовища. Я знайшов рішення.

Спочатку я створив свою віртуальну програму таким чином:

virtualenv -p python3 myenv

Активуйте оточення за допомогою:

source myenv/bin/activate

Тепер я встановив вимоги.txt, використовуючи:

pip3 install -r requirements.txt

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


Я зіткнувся з цією проблемою під час встановлення файлу вимог у віртуальному середовищі. Зараз я змінив свою відповідь на вирішення цього питання
— січень777,

1
Використання Анаконди Python 3.6 на Windows, я повинен був зробити virtualenv -p python myenv, myenv\Scripts\activate.bat,pip install -r requirements.txt
— bdforbes

1
Насправді, навпаки, це здається єдиною відповіддю, яка відповідає на частину питання про встановлення локально визначених деп-станцій requirements.txtдо virtualenv. Якщо я щось не пропускаю? У будь-якому випадку, дякую!
— davnicwil


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.