Requirements txt python как установить

woman 3287956 1920 Советы на день

Python Virtual Environments и Packages: venv и requirements.txt

Введение в Virtual Environments

Если вы работали с несколькими проектами, в которых использовался Python, то наверняка вы встречались с проблемой поломки одного из проекта, потому что обновленная версия библиотеки для другого проекта, не применима для текущего. Т.е. если вы работаете с Python и не используете miniconda или anaconda, то установка и обновление библиотек python постоянно ломает ваши проекты. Эта проблема называется «Ад зависимостей».

Поэтому лучшим подходом будет создавать для каждого отдельного проекта свою среду. В этой статье будет рассмотрена библиотека venv для настройки Virtual Environment для Windows.

Виртуальная среда — это способ Python для разделения зависимостей между проектами.

Создание виртуальной среды — venv env

venv (для Python 3) позволяет управлять отдельными установками пакетов для разных проектов. По сути, venv позволяет вам создавать «виртуальную» изолированную установку Python и устанавливать пакеты в эту виртуальную установку. При переключении проектов вы можете просто создать новую виртуальную среду и не беспокоиться о нарушении работы пакетов, установленных в других средах. При разработке приложений Python всегда рекомендуется использовать виртуальную среду.

Чтобы создать виртуальную среду, перейдите в каталог вашего проекта и запустите venv.

python venv env

Активация и деактивация виртуальной среды Python

Пока ваша виртуальная среда активирована, pip будет устанавливать пакеты в эту конкретную среду, и вы сможете импортировать и использовать пакеты в своем приложении Python.

Установка пакетов в виртуальную среду

Пример:

Как сохранить пакеты в файл requirements.txt

Будет выведен список спецификаторов пакетов, таких как:

Имейте в виду, что в этом случае в файле requirements.txt будут перечислены все пакеты, которые были установлены в виртуальной среде, независимо от того, откуда они пришли.

Установить пакеты из файла requirements.txt

Как запустить скрипт Python в виртуальной среде. Пример автоматизации с помощью cmd

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

Либо создать файл cmd с содержимым и запустить его:

Источник

requirements.txt — что это и зачем?

В исходниках множества Python-проектов можно встретить этот странный текстовый файл. Например, им пользуются urllib3, numpy, pandas, flake8 и куча других проектов. Давайте разберемся, что это такое, как этим пользоваться и зачем нам это нужно.

Гипотетическая предыстория

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

Скрипт получился настолько хорош, что вы хотите поделиться им со всеми своими друзьями. К сожалению, друзья при попытке запустить вашу программу получают следующую ошибку:

Кажется, что скинуть только код недостаточно.

Или, допустим, что вы сами через полгода-год попытаетесь запустить эту же программу. За это время вы успели пару раз переустановить Python, переустановить ОС, отформатировать свой магнитный накопитель (используйте SSD — нет, я серьёзно!) или может быть вообще сменили компьютер. Почти уверен, что при запуске скрипта вы получите ровно ту же самую ошибку.

Зачастую, когда мы пишем код, мы полагаемся на какие-либо библиотеки или фреймворки. Это со всех сторон хорошо — это удобно, уменьшает размер программы во много раз, позволяет не думать о мелких деталях, а решать свою конкретную задачу, опираясь на высокоуровневые абстракции. Но, к сожалению, есть «но» — такие библиотеки становятся частью вашей программы, ваш код становится зависим. Это значит, что ваш код больше не сможет работать сам по себе, для его работы должны быть установлены все зависимости.

Я хочу сказать, что намного мудрее составлять этот список зависимостей сразу же и просто поддерживать его в актуальном состоянии по мере развития проекта.

requirements.txt — это список внешних зависимостей

Сообщество Python исповедует идеологию «простое лучше, чем сложное». Наверное, поэтому для хранения списка зависимостей сообщество выбрало самый простой из возможных форматов — текстовый файл, где на каждой строке перечислено ровно по одной зависимости.

Стоит отметить, что requirements.txt не является стандартом, т.е. нет документа, который описывал бы требования к этому файлу. Скорее, это просто распространённая практика в сообществе, которая, наверное, возникла спонтанно и хорошо прижилась.

Вот пример самого простого такого файла (кстати, именно этим файлом можно описать зависимости, которые нужны для запуска нашего скрипта с погодой):

Если бы было несколько зависимостей, то файл выглядел бы так:

Можно указать конкретную версию зависимости. Если версия не указана, то считается, что нужна последняя доступная:

Можно указывать диапазоны и другие более сложные «спецификаторы версий». В целом, в requirements.txt можно писать любые «запросы», которые понимает команда pip install :

Как пользоваться

Команда pip install умеет читать такие файлы, если передать специальный флаг:

Таким образом, если requirements.txt будет иметь вот такое содержимое:

То следующие две команды будут иметь одинаковое действие:

Преимущества использования requirements.txt :

На таком маленьком примере разница может быть не очевидна, но когда список зависимостей разрастётся до определенного размера, то вам не захочется больше перечислять его в pip install напрямую.

Так как это распространённое соглашение, то другим разработчикам будет достаточно увидеть этот файл, чтобы понять, что нужно сделать. Это здорово экономит время на чтении инструкций.

Как создать

Но можно использовать и встроенную в pip функциональность:

Команда pip freeze выводит все установленные в интерпретатор сторонние пакеты. Заметьте, что в список попали не только прямые зависимости ( pyowm ), но и подзависимости — это даже лучше, потому что вы сможете более точно воссоздать окружение по этому файлу.

Можно перенаправить вывод этой команды в файл при помощи стандартного консольного приема (работает и на Windows), и получить валидный файл requirements.txt :

Обратите внимание, что pip freeze выведет список пакетов в том окружении, в котором он запущен. Не забудьте активировать виртуальное окружение перед запуском этой команды, иначе получите список пакетов, установленных в глобальный интерпретатор. Кстати, у меня есть пост про виртуальные окружения, где объясняется как ими пользоваться.

Подытожим плюсы и минусы ручного и автоматического подходов:

Можно использовать и смешанный подход: сгенерировать начальную версию файла при помощи pip freeze и допилить её затем руками, если у вас какая-то сложная нестандартная ситуация.

Проблемы requirements.txt

Почему «хотя бы примерно»? Практика показывает, что зафиксировать версию пакета недостаточно. Иногда случается, что под одной версией пакета в разное время может находиться совершенно разный код. PyPI, конечно, не позволит перезаписать уже опубликованную версию, но, например, ваш приватный корпоративный индекс пакетов может быть не таким строгим.

Заключение

Для тренировки можно попытаться запустить скрипт с погодой. Все исходники лежат здесь.

Дополнительное чтение

Подпишитесь!

Чтобы получить уведомление о новом посте можно:

Источник

Все требования в одном месте – requirements.txt

Обычно для запуска проекта требуется несколько внешних пакетов.

Чтобы каждый раз с болью в сердце не собирать их, список этих пакетов принято поставлять вместе с исходным кодом. Принято селить весь список необходимых пакетов в файле requirements.txt в корне проекта. Формат этого файла простой: по одному пакету на строку.

Заморозка пакетов

У одного пакета обычно много версий. Когда мы просим пип установить пакет, он устанавливает самую свежую из доступных.

Это может привести к проблемам: скажем, проект разрабатывался на версии 1.2. Через полгода потребовалось развернуть его заново, пип установил последнюю версию – 1.5. Эта версия может быть не совместима со старой, тогда код сломается.

Вот часть requirements.txt из Девмана:

Получить все версии пакетов, установленных на вашем компьютере, можно командой pip freeze :

Все зависимости заморозить и в requirements.txt

Установка

Зависимости зависимостей

К сожалению, правильное заполнение requirements.txt не решает все проблемы с зависимостями и версиями.

Эта проблема свойственна большим проектам, у которых десятки зависимостей и сотни неявных зависимостей.

Решение этой проблемы рассмотрим в другой раз. Главное – быть начеку.

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Источник

How can I install packages using pip according to the requirements.txt file from a local directory?

Here is the problem:

I have a requirements.txt file that looks like:

I have a local archive directory containing all the packages + others.

I have created a new virtualenv with

Upon activating it, I tried to install the packages according to requirements.txt from the local archive directory.

I got some output that seems to indicate that the installation is fine:

But a later check revealed that none of the packages are installed properly. I cannot import the packages, and none are found in the site-packages directory of my virtualenv. So what went wrong?

14 Answers 14

This works for everyone:

RIZKi

GQqJh

If a local path or file:// URL that’s a directory, then look for archives in the directory listing.

RIZKi

For virtualenv to install all files in the requirements.txt file.

RIZKi

MqCvM

I had a similar problem. I tried this:

(-U = update if it had already installed)

But the problem continued. I realized that some of generic libraries for development were missed.

I don’t know if this would help you.

RIZKi

photo

For further details, please check the help option:

Further information on some commonly used pip install options (this is the help option on the pip install command):

NWTio

RIZKi

5iqzV

Short answer

or in another form:

Explanation

pip will start installation only after checking the availability of all listed items in the requirements file and it won’t start installation even if one requirement is unavailable.

One workaround to install the available packages is installing listed packages one by one. Use the following command for that. A red color warning will be shown to notify you about the unavailable packages.

To ignore comments (lines starting with a # ) and blank lines, use:

OtzmY

First of all, create a virtual environment.

Then activate the environment and install all the packages available in the requirement.txt file.

RIZKi

Often, you will want a fast install from local archives, without probing PyPI.

First, download the archives that fulfill your requirements:

Then, install using –find-links and –no-index :

uOIWL

RIZKi

photo

I work with a lot of systems that have been mucked by developers «following directions they found on the Internet». It is extremely common that your pip and your python are not looking at the same paths/site-packages. For this reason, when I encounter oddness I start by doing this:

That is a happy system.

Below is an unhappy system. (Or at least it’s a blissfully ignorant system that causes others to be unhappy.)

It is unhappy because pip is (python3.6 and) using /usr/local/lib/python3.6/site-packages while python is (python2.7 and) using /usr/local/lib/python2.7/site-packages

When I want to make sure I’m installing requirements to the right python, I do this:

You’ve heard, «If it ain’t broke, don’t try to fix it.» The DevOps version of that is, «If you didn’t break it and you can work around it, don’t try to fix it.»

Источник

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

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

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

Я создал новый virtualenv с

активировав его, я попытался установить пакеты в соответствии с require.txt из каталога локального архива.

Я получил вывод, который, кажется, указывает, что установка в порядке

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

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

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

Для virtualenv необходимо установить все файлы в файл needs.txt.

У меня была аналогичная проблема. Я попробовал это:

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

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

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

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

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

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

NWTio

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

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

объяснение

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

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

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

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

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

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

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

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

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

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

Источник

Оцените статью
Добавить комментарий

Adblock
detector