Python 分發包中新增額外檔案

PrivateRookie發表於2019-08-16

在製作一個 Python 分發包時經常需要把一些檔案新增到包中。最常見的例子是你希望通過 pip install
命令安裝 Python 包時會在 /etc/ 等目錄下自動新增預設配置檔案,由此可以讓 Python
安裝完成就可以工作,同時也可以給使用者提供配置樣例參考。

參考 Installing Additional Files

如果使用 setuptools,在 setup.py 檔案中可以通過 data_files 配置項配置分發包的額外檔案,
格式為:(<安裝位置>, [<檔案1>, <檔案2>, ...])

# setup.py
from setuptools import setup

setup(...,
      data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']),
                  ('config', ['cfg/data.cfg'])],
    )

上面的示例<安裝位置>使用了相對路徑,在安裝時會根據安裝字首如 sys.prefix(系統級安裝) 和
site.USER_BASE(使用者級安裝)解釋為絕對路徑。雖然也可以使用絕對路徑,但不推薦這麼做,因為
這與 wheel 格式的分發包不相容。檔案路徑同樣也是相對路徑,其路徑起點為 setup.py 檔案所在目錄,
即專案的根目錄,注意檔案不能被重新命名。

如果使用 pbr 幫助打包,宣告額外檔案的方法與上述類似,
需要在 setup.cfg 如下配合

[files]
packages =
    pbr
data_files =
    etc/pbr = etc/*
    etc/init =
        pbr.packaging.conf
        pbr.version.conf

多少事,從來急。天地轉,光陰迫。

相關文章