Pip: Любое обходное решение, чтобы избежать --allow-external?

Последние версии pip installer не установили пакеты, которые не загружают свои файлы пакетов в PyPI, если пользователь явно не предоставляет --allow-external вариант (связанный ответ).

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

$ pip install --allow-external dirspec MyPackage

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

$ pip install --allow-external dirspec TheirPackage

Есть ли какое-либо обходное решение, чтобы избежать этой ситутации?

Ответ 1

Правильная вещь - это включить требования в ваш tarball или в мега-архив, содержащий их проекты и ваши. Затем pip будет легко установить из локальных файлов.

Ответ 2

Вы запрашиваете обходной способ защиты. Установка с внешнего сайта без моего ведома может считаться вредной.

Может быть альтернативное решение: либо полагаться на pip, жалуясь на то, что требуемый пакет недоступен без этого коммутатора, или пытается дать такую ​​инструкцию из вашего установочного кода. Тем не менее, второй подход потерпит неудачу, если вы действительно заявляете зависимость от такого пакета, поскольку pip попытается сначала установить внешний, тем самым не давая вашему setup.py возможность сказать что-либо. Вам нужно будет сделать свой пакет независимым от него и распечатать с setup.py инструкцию по установке пакета с внешнего сайта. Это звучит еще сложнее.

Я бы предположил, что такая ситуация (зависящая от внешнего пакета) будет достаточно популярной, что pip позаботится о том, чтобы дать достаточно поучительный намек на то, как разрешить такую ​​зависимость.

EDIT: установка тестирования с текущей версией pip (1.5.4) показывает, что есть такая подсказка, предлагающая использовать переключатель --use-external print.

$ pip install gitlle
Downloading/unpacking gittle
.....
Downloading/unpacking mimer (from gittle)
  Could not find any downloads that satisfy the requirement mimer (from gittle)
  Some externally hosted files were ignored (use --allow-external mimer to allow).
Cleaning up...