Удалите docker-py в setup.py перед установкой docker - PullRequest
0 голосов
/ 25 июня 2018

У меня есть пакет, который зависит от docker-py, и я хочу обновить зависимость до docker. К сожалению, эти два пакета не очень хорошо согласуются друг с другом.

Безопасный способ сделать это - сначала удалить docker-py, а затем установить мой пакет, который установит docker на его место (я уже изменил требования с docker-py на docker).

Есть ли способ, как это происходит в setup.py, когда я обновляю свой пакет (через pip или любым другим способом), не портя среду python?

Первое, что мне пришло в голову, это проверить в setup.py, если docker-py уже установлен и запустить pip uninstall, вот так:

   from setuptools import setup

   ...

   if 'docker-py' in [x.project_name for x in pip.get_installed_distributions()]:
       submodule.check_call("pip uninstall -y docker-py".split())

   setup(
      ...
   )

Программа установки установит новую зависимость, и все будет работать нормально.

Это безопасно? Есть ли лучшие альтернативы?

1 Ответ

0 голосов
/ 25 июня 2018

pip не является полноценным менеджером пакетов, у него нет таких понятий, как "Этот пакет несовместим с этим" или ". Этот пакет заменяет этот" . То, что вы пытаетесь сделать, это подражать этим важным понятиям. К сожалению, это не работает.

pip запускает setup.py на пользовательских хостах только для исходных дистрибутивов (sdist). Для яиц / колесиков pip запускает setup.py на хосте разработчика, и нет никакого способа настроить предустановочный скрипт для запуска на хостах пользователей, а колесные диски сегодня являются предпочтительным форматом распространения.

Лучше всего попросить пользователя (с помощью документации) удалить docker-py вручную.

...