Разработка библиотеки Python с Pipenv - PullRequest
4 голосов
/ 01 апреля 2019

Я пытаюсь разработать библиотеку Python, которая в конечном итоге будет включена в PyPI.

Это библиотека, которую я использую в другом проекте, который извлекает ее из PyPI.

У меня есть юнит-тесты для библиотеки в собственном репозитории проекта. Но я в основном проверяю используемую библиотеку через основное приложение.

Ранее я "публиковал" библиотеку локально, используя

pip install -e

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

Но теперь я переезжаю в pipenv. И я хочу быть в состоянии сделать то же самое. Но если я добавлю зависимость в файл Pipenv, он, похоже, попытается извлечь из реального PyPI, а не из моего локального хранилища.

Как мне настроить этот рабочий процесс с Pipenv?

1 Ответ

6 голосов
/ 05 апреля 2019

Pipenv может устанавливать пакеты из разных источников, а не только из PyPI.Использование CLI очень похоже на pip , что является функцией pipenv .Вы можете передать локальный путь или URL с префиксом CVS в pipenv install.Pipenv добавит пакет в Pipfile соответствующим образом.

Использование CLI

Сначала перейдите в папку проекта (которая содержит Pipfile) вашего основного приложения.Затем запустите

$ pipenv install --dev -e "/path/to/your/local/library"

Если библиотека управляется версией Git или SVN, вы также можете использовать URL-адрес, подобный следующему:

$ pipenv install --dev -e git+https://github.com/your_user_id/libraryname@develop

Если репозиторий Git для вашей библиотеки хранится локальноиспользуйте file:// вместо https://github.com.Также поддерживаются другие протоколы, такие как FTP и SSH.

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

Использование Pipfile

Обычно вам не нужно изменять Pip-файл напрямую.Для расширенных настроек в pipfile, смотрите спецификации Pipfile .Ниже приведены примеры записей для pipfile

[dev-packages]
mylibrary = { git = 'https://github.com/xxx/mylibrary.git', ref = '0.0.1', editable = true }
"e1839a8" = {path = "/path/to/your/local/library2", editable = true}
"e51a27" = {file = "/path/to/your/local/library1/build/0.0.1.zip"}

Установка частного индекса PyPI

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

...