Я написал новую утилиту на выходных и назвал её pipenv. Зацените её на GitHub!
Pipenv это экспериментальный проект, цель которого привнести лучшее из мира packaging в мир Python. Он объединяет такие утилиты как Pipfile, pip и virtualenv в единый инструмент. И очень круто выглядить в терминале.
Pipenv автоматически создаёт и управляет virtualenv в ваших проектах, а также позволяет устанавливать/удалять пакеты Pipfile. А команда lock создаёт lockfile (Pipfile.lock).
Особенности
- Автоматически находит корень проекта рекурсивным поиском Pipfile.
- Автоматически создаёт Pipfile, если его ещё нет.
- Автоматически создаёт файл Pipfile.lock, если его ещё нет.
- Автоматически создаёт virtualenv в стандартном расположении (project/.venv).
- Автоматически добавляет пакеты в Pipfile при их установке.
- Автоматически удаляет пакеты из Pipfile при их удалении.
- Автоматически обновляет pip.
Главные команды такие: install, uninstall и lock, которая создаёт Pipfile.lock. Они задуманы как замена для $ pip install, а также автоматического управления virtualenv.
Основные концепты
- virtualenv создаётся автоматически, если её ещё нет.
- Если не передавать параметров команде install, будут установлены все требуемые пакеты.
- Если не передавать параметров команде uninstall, все пакеты будут удалены.
- Для инициализации виртуальной среды Python 3 выполните сперва $ pipenv —three.
- Для инициализации виртуальной среды Python 2 выполните сперва $ pipenv —two
- В других случаях основным окружением будет то, которое доступно по команде $ which python.
Другие команды
- shell создаст оболочку в виртуальной среде.
- run запустит переданную команду в virtualenv, со всеми переданными аргументами (например, $ pipenv run python).
- check проверит соответствие зависимостей текущей среды стандарту PEP 508.
Примеры использования
$ pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...
Options:
--where Output project home information.
--bare Minimal output.
--three / --two Use Python 3/2 when creating virtualenv.
--version Show the version and exit.
--help Show this message and exit.
Commands:
check Checks PEP 508 markers provided in Pipfile.
install Installs a provided package and adds it to...
lock Generates Pipfile.lock.
run Spans a command installed into the...
shell Spans a shell within the virtualenv.
uninstall Un-installs a provided package and removes it...
update Updates pip to latest version, uninstalls all...
$ pipenv --where
Pipfile found at /Users/kennethreitz/repos/kr/pip2/test/Pipfile. Considering this to be the project home.
$ pipenv install
Creating a virtualenv for this project...
...
No package provided, installing all dependencies.
Virtualenv location: /Users/kennethreitz/repos/kr/pip2/test/.venv
Installing dependencies from Pipfile.lock...
...
To activate this project's virtualenv, run the following:
$ pipenv shell
$ pipenv install pytest --dev
Installing pytest...
...
Adding pytest to Pipfile's [dev-packages]...
$ pipenv lock
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Note: your project now has only default [packages] installed.
To install [dev-packages], run: $ pipenv init --dev
$ pipenv install --dev
Pipfile found at /Users/kennethreitz/repos/kr/pip2/test/Pipfile. Considering this to be the project home.
Pipfile.lock out of date, updating...
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Note: your project now has only default [packages] installed.
To install [dev-packages], run: $ pipenv install --dev
Installing dependencies from Pipfile.lock...
...
$ pipenv uninstall
No package provided, un-installing all dependencies.
Found 25 installed package(s), purging...
...
Environment now purged and fresh!
$ pipenv shell
Spawning virtualenv shell (/bin/zsh).
(test)$
Установка
$ pip install pipenv
Kenneth Reitz
Разработчик: java, kotlin, c#, javascript, dart, 1C, python, php.
Пишите: @ighar. Buy me a coffee, please :).