2017-02-26 19 views
0

我已經把庫結構如下:聲明我的包的可選組件在setup.py

filters/ 
    __init__.py 

    core/ 
    __init__.py 
    base.py 
    complex.py 
    number.py 
    string.py 

    extra/ 
    __init__.py 
    django.py 
    iso.py 

filters.core當開發人員做了pip install filters應始終安裝。我想filters.extra是可選的。它不會默認安裝;相反,開發人員需要執行諸如pip install filters[extra]之類的操作來安裝額外的軟件包以及核心。

使用setuptools可以做到這一點嗎?

回答

1

不能用默認的setuptools方法。有兩種選擇,您可以選擇:

  1. 創建第二個項目與額外的東西,例如, filters-extra。這就是許多項目所做的。看例如在flask on pypi
  2. 使用setuptools的"optional features"機制。這將始終安裝您的代碼,但只有在明確請求時纔會安裝附加功能的依賴項。

如果附加組件與您的核心功能真正分離並且在代碼中沒有互連,我通常會選擇選項1,因爲它更直接地使用和文檔。