打包 Python 應用程式時,通常需要在發行版中包含其他資料檔案。在 setuptools 和 distutils 中,package_data 選項就是用於此目的。然而,一些用戶在嘗試使用這種方法包含包資料時遇到問題。
根據文檔,setup() 函數應配置如下以包含包資料:
setup( name='myapp', packages=find_packages(), package_data={ 'myapp': ['data/*.txt'], }, include_package_data=True, zip_safe=False, install_requires=['distribute'], )
此配置指定打包應用程式時應將擴展名為.txt 的文件包含在myapp/ data 目錄中。然而,一些用戶可能會發現這種方法不起作用。
提供的解決方案顯示問題出在 package_data 的行為。請注意,package_data 僅在建置二進位套件時有效(使用 setup.py bdist ...)。但是,在建立來源包時(使用 setup.py sdist ...)它不起作用。
建議不要依賴 package_data,而是使用 MANIFEST.in 檔案。 MANIFEST.in 檔案提供了應包含在二進位和來源發行版中的檔案清單。這確保用戶可以建立兩種類型的發行版並包含必要的資料。
以上是為什麼「package_data」適用於二進位發行版,但不適用於「setuptools/distutils」中的來源發行版?的詳細內容。更多資訊請關注PHP中文網其他相關文章!