[英]Python Packaging multiple subpackages with different data directories
我有一個目錄結構,例如foobar
和alphabet
數據目錄以及代碼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]
含義打包並發布alphabet
和foobar
作為單獨的軟件包
pip install mylibrary
pip install alphabet
之后,添加alphabet
和foobar
作為extras
:
setup(
…,
extras = {
'alphabet': ['alphabet'],
'foobar': ['foobar'],
}
)
字典中的鍵是pip install mylibrary[EXTRA_NAME]
使用的名稱,這些值是將從PyPI安裝的軟件包名稱的列表。
PS。 不,您不能使用Extras安裝一些數據文件,這些數據文件不能從PyPI包中獲得。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.