【问题标题】:Dependencies packages and subpackages依赖包和子包
【发布时间】:2022-12-21 13:48:43
【问题描述】:

我对 python 打包真的很陌生。它已经是一个令人困惑的话题,推荐的方法和选项似乎只有少数人适用。但更糟糕的是,我偶然发现了这个问题。

我一开始打算写一个相当小的包,目的非常明确。我的第一个解决方案包括导入熊猫。但是我收到了删除该依赖项的请求。所以我试着重构这个函数,不出所料,它变慢了。而且慢到我几乎不能接受的程度。

因此,一个解决方案是提供一个使用 pandas 的包和一个不使用 pandas 的包。这样人们就可以根据项目要求使用 or 。现在我想知道最好的方法是什么。

我可以:

  1. 使用不同的包名称创建两个单独的项目。那行得通,但我想将代码放在一起,并且共享函数和代码。
  2. 执行 1. 但从简单包中导入共享部分。
  3. 使用子包以防移除对核心子包的依赖。

    什么是满足不同需求的好方法?

【问题讨论】:

    标签: python dependencies python-packaging


    【解决方案1】:

    我认为 optional dependencies 是一个很好的用例。 您可以定义一个名为 your_package[fast] 的可选依赖项来安装 pandas。 在您的代码中,您可以尝试以下操作:

    try:
        import pandas as pd
        PANDAS_INSTALLED = True
    except ImportError:
        PANDAS_INSTALLED = False
    
    # some other code...
    
    if PANDAS_INSTALLED:
       def your_function(...):  # pandas installed
           ...
    else:
       def your_function(...):  # pandas not installed 
           ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2016-06-09
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多