在安装docker之前先在setup.py中删除docker-py

时间:2018-06-25 11:09:51

标签: python docker pip setuptools dockerpy

我有一个依赖docker-py的软件包,并且我想将依赖项升级到docker。 不幸的是,这两个包不能很好地配合使用。

一种安全的处理方式是先卸载docker-py然后安装我的软件包,该软件包将在其位置安装docker(我已经将要求从docker-py更改为docker)。

在不破坏python环境的情况下(通过pip或任何其他方式)升级软件包时,在setup.py中是否有这种方式发生?

我想到的第一件事是在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 :(得分:0)

pip不是一个完整的软件包管理器,它没有诸如“此软件包与该软件包不兼容” “此软件包替代该软件包”之类的概念/ em>。您正在尝试模仿这些重要概念。不幸的是,这行不通。

pip仅在用户主机上针对源分发(sdist)运行setup.py。对于鸡蛋/转盘,pip在开发者主机上运行setup.py,无法配置要在用户主机上运行的预安装脚本,而如今的转盘是首选的分发格式。

最好的办法是要求用户(通过文档)手动卸载docker-py