簡體   English   中英

Python使用不同的數據目錄打包多個子包

[英]Python Packaging multiple subpackages with different data directories

我有一個目錄結構,例如foobaralphabet數據目錄以及代碼something.py

\mylibrary
    \packages
         \foobar
             foo.zip
             bar.zip
         \alphabet
             abc.zip
             xyz.zip
          something.py
     setup.py

目標是使用戶可以通過以下方式pip安裝模塊:

pip install mylibrary[alphabet]

而且這將僅包括來自packages/alphabet/*數據和python代碼的數據。 pip install mylibrary[foobar]應該具有類似的行為。

如果用戶未按照規范進行安裝:

pip install mylibrary

然后它將在packages/下包含所有數據目錄。

目前,我嘗試使用Python3.5編寫setup.py ,如下所示:

import glob
from setuptools import setup, find_packages


setup(
  name = 'mylibrary',
  packages = ['packages'],
  package_data={'packages':glob.glob('packages' + '/**/*.txt', recursive=True)},
)

當用戶執行pip install mylibrary時,這將創建一個包含所有數據目錄的pip install mylibrary

我應該如何更改setup.py ,以便可以進行像pip install mylibrary[alphabet]這樣的特定pip安裝?

首先,您必須將pip install mylibrary[alphabet]含義打包並發布alphabetfoobar作為單獨的軟件包

pip install mylibrary
pip install alphabet

之后,添加alphabetfoobar作為extras

setup(
    …,
    extras = {
        'alphabet': ['alphabet'],
        'foobar': ['foobar'],
    }
)

字典中的鍵是pip install mylibrary[EXTRA_NAME]使用的名稱,這些值是將從PyPI安裝的軟件包名稱的列表。

PS。 不,您不能使用Extras安裝一些數據文件,這些數據文件不能從PyPI包中獲得。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM