Apabila membungkus aplikasi Python, selalunya perlu memasukkan fail data tambahan dalam pengedaran. Dalam setuptools dan distutils, pilihan package_data bertujuan untuk tujuan ini. Walau bagaimanapun, sesetengah pengguna menghadapi masalah apabila cuba memasukkan data pakej menggunakan pendekatan ini.
Menurut dokumentasi, fungsi persediaan() harus dikonfigurasikan seperti berikut untuk memasukkan data pakej:
setup( name='myapp', packages=find_packages(), package_data={ 'myapp': ['data/*.txt'], }, include_package_data=True, zip_safe=False, install_requires=['distribute'], )
Konfigurasi ini menentukan bahawa fail dengan sambungan .txt harus disertakan dalam direktori myapp/data semasa membungkus aplikasi. Walau bagaimanapun, sesetengah pengguna mungkin mendapati bahawa pendekatan ini tidak berfungsi.
Penyelesaian yang disediakan menunjukkan bahawa isu itu terletak pada tingkah laku package_data. Adalah diperhatikan bahawa package_data hanya berfungsi apabila membina pakej binari (menggunakan setup.py bdist ...). Walau bagaimanapun, ia tidak berfungsi apabila membina pakej sumber (menggunakan setup.py sdist ...).
Daripada bergantung pada package_data, pengesyoran adalah menggunakan fail MANIFEST.in. Fail MANIFEST.in menyediakan senarai fail yang harus disertakan dalam pengedaran binari dan sumber. Ini memastikan pengguna boleh membuat kedua-dua jenis pengedaran dan memasukkan data yang diperlukan.
Atas ialah kandungan terperinci Mengapakah `data_pakej` Berfungsi untuk Pengagihan Binari tetapi Bukan Pengagihan Sumber dalam `setuptools/distutils`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!