Я искал менеджера пакетов, который можно использовать с python. Я хочу указать зависимости проекта в файле. Например, Ruby использует Gemfile, где вы можете использовать установку пакета. Как я могу достичь этого в python?
Python эквивалент npm или rubygems
Ответ 1
Инструмент pip
становится стандартом в эквиваленте драгоценных камней Ruby. Как distribute
, pip
использует репозиторий пакетов PyPI (по умолчанию) для разрешения и загрузки зависимостей. pip
может устанавливать зависимости из зависимых от проекта проектов (называемых requirements.txt
по соглашению):
pip install -r requirements.txt
Вы также можете "заморозить" текущие пакеты на пути Python, используя pip:
pip freeze > requirements.txt
При использовании в сочетании с пакетом virtualenv
вы можете надежно создавать среды проекта Python с зависимыми от проекта зависимостями.
Ответ 2
Pipenv
(Я знаю, что это старый вопрос, и у него уже есть ответ, но для тех, кто приезжает сюда, ищет другой ответ, как я.)
Я нашел очень хороший эквивалент для npm, он называется pipenv. Он одновременно обрабатывает требования virtualenv и pip, поэтому он больше похож на npm.
Простой вариант использования
pip install pipenv
тогда вы можете создать новый virtualenv с третьей версией python, а также создать pip файл, который будет заполнен требованиями вашего проекта и другими материалами:
pipenv install --three
используя созданный вами virtualenv:
pipenv shell
установка нового пакета Python:
pipenv install requests
запуск вашего .py файла похож на:
pipenv run python somefile.py
вы можете найти его здесь.
Ответ 3
Python использует pip
для менеджера пакетов. Команда pip install
имеет параметр -r <file>
для установки пакетов из указанного файла требований.
Установить команду:
pip install -r requirements.txt
Пример requirements.txt
Содержание:
Foo >= 1.2
PickyThing <1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1
SomethingWhoseVersionIDontCareAbout
См. раздел "Анализ требований" в документах для полного описания формата: https://pip.pypa.io/en/stable/user_guide/#requirements-files
Ответ 4
Вот как я ограничиваю область действия pip
текущим проектом. Похоже на обратное, если вы пришли из NodeJS npm
или PHP composer
, где вы явно указываете глобальные установки с помощью -g
или --global
.
Если у вас еще не установлен virtualenv
, установите его глобально с помощью:
pip install virtualenv
Каждый проект Python должен иметь свою собственную установку virtualenv
. Его легко настроить, просто cd
в корневой каталог вашего проекта и:
python3 -m virtualenv env # creates env folder with everything you need
Активировать virtualenv:
source env/bin/activate
Теперь любое взаимодействие с pip
содержится в вашем проекте.
Запустите pip install package_name==version
для каждой из ваших зависимостей. Они установлены в ./env/lib/python3.x/site-packages/
Если вы хотите сохранить зависимости проекта в файл, запустите:
pip freeze > requirements.txt
На самом деле вам не нужны -l
или --local
, если вы находитесь в активированном virtualenv для конкретного проекта (которым вы и должны быть).
Теперь, когда вы хотите установить свои зависимости из requirements.txt
, настройте вашу virtualenv и запустите:
pip install -r requirements.txt
Это все.
Ответ 5
Это старый вопрос, но все постоянно развивается.
Далее к другому ответу о pipenv
. Существует также менеджер пакетов Python, который называется poetry
.
Подробное сравнение между pipenv
и poerty
приведено здесь: Сравнение функций между менеджерами пакетов npm, pip, pipenv и Стихи. Он также связывает функции с общими функциями npm
.