Руководство по созданию файла Requirements.txt для проекта Python.
Если мы проверим некоторые онлайн-проекты Python на GitHub, скорее всего, в них есть requirements.txt
текстовый файл. Этот requirements.txt
содержит библиотеки Python и их конкретные версии, которые нам необходимо установить, прежде чем мы сможем запустить проект. В этой статье давайте рассмотрим шаги, которые необходимо предпринять для создания requirements.txt
для нашего проекта Python.
Понимание заморозки пипсов
Первая команда, которую нам нужно понять, это pip freeze
. Обратите внимание, что мы вводим это в наш терминал (macOS) или Cmd (Windows)
pip freeze
Мы могли бы получить что-то вроде этого:
anyio==2.1.0 appnope==0.1.2 argon2-cffi==20.1.0 async-generator==1.10 attrs==20.3.0 Babel==2.9.0 backcall==0.2.0 bleach==3.3.0 blis==0.4.1 catalogue==1.0.0 certifi==2020.12.5 # and a whole lot of other stuff # mine has 110 lines in total
И если мы добавим > requirements.txt
сзади:
pip freeze > requirements.txt
Эти пакеты будут записаны в текстовый файл requirements.txt
вместо того, чтобы распечатываться на терминале. Материал, который распечатывается, — это, по сути, каждый пакет, который вы установили с помощью pip на свой компьютер, вместе с их версиями. Этот список, вероятно, будет содержать пакеты, которые вам нужны для вашего проекта, но, скорее всего, он будет содержать и целую кучу других вещей, которые вам не нужны.
Поскольку мы, вероятно, не хотим, чтобы наши пользователи устанавливали все эти ненужные вещи, нам нужен способ заставить pip freeze > requirements.txt
записывать только соответствующие пакеты в requirements.txt
. Или же наши пользователи могут разозлиться на нас за то, что мы просим их установить кучу ненужных вещей. Мы можем добиться этого, используя виртуальную среду Python.
Понимание виртуальной среды Python
Виртуальная среда — это отдельная среда Python, в которой интерпретатор Python, библиотеки и скрипты, установленные внутри, изолированы от других сред. Вы можете думать об этом как о дополнительной одноразовой установке Python на вашем компьютере, которую мы можем включать и выключать по желанию и которая содержит свои пакеты. Если мы испортим вашу виртуальную среду, мы можем просто удалить ее и создать новую.
Создание виртуальной среды с помощью Venv
Для создания виртуальной среды мы можем использовать библиотеку Python venv
. Введите это в свой терминал или cmd:
python -m venv env
Примечание: пользователи macOS, не забудьте заменить python
на python3
.
Флаг -m
говорит Python, что мы хотим использовать библиотеку, а venv
— это просто библиотека, которую мы хотим использовать. env
здесь относится к имени среды, которую мы создадим. После выполнения этой команды в нашем рабочем каталоге должна появиться новая папка env
. Это наша виртуальная среда.
Активация нашей виртуальной среды
Нам нужно сделать это в терминале/cmd в том же каталоге, что и папка нашей виртуальной среды.
Окна
env/bin/activate.bat
Для macOS
source env/bin/activate
Не забудьте изменить env
на имя вашей среды, если вы не использовали env
После этого вы должны увидеть что-то подобное — это означает, что вы уже находитесь в виртуальной среде Python. Нашим следующим шагом будет установка только соответствующих библиотек Python в нашу виртуальную среду.
Установка соответствующих библиотек Python с помощью Pip
Допустим, я работаю над проектом Python FastAPI, который использует pandas где-то в моем коде, и мне нужно установить только fastapi
, uvicorn
и pandas
. Мне просто нужно установить эти библиотеки в моей виртуальной среде с помощью pip:
pip install fastapi uvicorn pandas
Мой пример кода (app.py):
import pandas as pd from fastapi import FastAPI import uvicorn app = FastAPI() @app.get("/") def home(): return { "message": "hello world" } # other stuff if __name__ == "__main__": uvicorn.run("app:app", host="127.0.0.1", port=5000)
Сгенерируйте файл Requirements.txt с помощью заморозки пипсов.
После того, как мы установили только соответствующие пакеты и библиотеки для нашего проекта и убедились, что наш проект работает нормально, мы можем перейти к последнему шагу — созданию requirements.txt
с помощью команды pip freeze > requirements.txt
, как обсуждалось ранее.
pip freeze > requirements.txt
И мы получаем это, когда проверяем requirements.txt
:
anyio==3.4.0 asgiref==3.4.1 click==8.0.3 fastapi==0.70.0 h11==0.12.0 idna==3.3 importlib-metadata==4.8.2 numpy==1.21.4 pandas==1.3.4 pydantic==1.8.2 python-dateutil==2.8.2 pytz==2021.3 six==1.16.0 sniffio==1.2.0 starlette==0.16.0 typing-extensions==4.0.0 uvicorn==0.15.0 zipp==3.6.0
Здесь всего 18 пакетов, а не 100+ в начале статьи, и ни один из этих 18 пакетов не является неактуальным, не используемым нашим проектом. Итак, наш requirements.txt
готов к загрузке на GitHub!
Деактивация нашей виртуальной среды
deactivate
Чтобы деактивировать нашу виртуальную среду, нам просто нужно ввести deactivate
в наш терминал / cmd.
Заключение
Надеюсь, это было полезно. Если это было полезно для вас и вы хотите поддержать меня как писателя, подумайте о том, чтобы подписаться на членство в Medium! Это 5 долларов в месяц, и вы получаете неограниченный доступ к историям на Medium. Если вы зарегистрируетесь по моей ссылке, я получу небольшую комиссию.
Вот ссылка для чтения неограниченного доступа к Medium
Если вы находите ценность в том, что читаете, и хотите получать уведомления всякий раз, когда я публикую статью, рассмотрите возможность подписки на мою рассылку.
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку здесь.