根据用户安装的其他软件包,让`pip install <package>` 以编程方式安装不同版本的 <package>?

问题描述

我是一名 Python 软件包开发人员,希望将我的软件包分发给一些用户在这用户中,有的使用 JupyterLab 2.0,有的使用 JupyterLab 3.0。

我想知道是否可以更改某些设置(或 setup.py 中的代码),以便根据用户拥有的 JupyterLab 版本,在用户运行时安装不同版本的我的 pip install <package> {1}}。

例如:

  1. 用户 1 已安装 JupyterLab 2.0。当它们运行 pip install <package> 时,它会安装软件包版本 0.1.1
  2. 用户 2 已安装 JupyterLab 3.0。当它们运行 pip install <package> 时,它会安装软件包版本 0.2.1

感谢您提供任何信息!

解决方法

在您的 setup.py 中,您可以使用条件语句来检查当前版本(如下所示)并设置您要安装的正确安装版本

import jupyterlab
version = jupyterlab.__version__

if version.startswith("2"):
    install_version="0.0.1"
elif version.startswith("3"):
    install_version="0.0.2"

注意:不要忘记使用异常处理来检查是否至少安装了 jupyterlab

注意:如果它与 pip 一起使用,这将不起作用。这仅适用于源代码分发并使用 pip install setup.py

安装