Maison  >  Article  >  développement back-end  >  Pourquoi `package_data` fonctionne-t-il pour les distributions binaires mais pas pour les distributions sources dans `setuptools/distutils` ?

Pourquoi `package_data` fonctionne-t-il pour les distributions binaires mais pas pour les distributions sources dans `setuptools/distutils` ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 05:13:31777parcourir

Why Does `package_data` Work for Binary Distributions but Not Source Distributions in `setuptools/distutils`?

Inclusion de données de package dans setuptools/distutils

Lors du packaging d'applications Python, il est souvent nécessaire d'inclure des fichiers de données supplémentaires dans la distribution. Dans setuptools et distutils, l'option package_data est prévue à cet effet. Cependant, certains utilisateurs rencontrent des problèmes lorsqu'ils tentent d'inclure des données de package en utilisant cette approche.

Selon la documentation, la fonction setup() doit être configurée comme suit pour inclure les données de package :

setup(
   name='myapp',
   packages=find_packages(),
   package_data={
      'myapp': ['data/*.txt'],
   },
   include_package_data=True,
   zip_safe=False,
   install_requires=['distribute'],
)

Cette configuration spécifie que les fichiers avec l'extension .txt doivent être inclus dans le répertoire myapp/data lors du packaging de l'application. Cependant, certains utilisateurs peuvent constater que cette approche ne fonctionne pas.

La solution fournie suggère que le problème réside dans le comportement de package_data. Il est à noter que package_data ne fonctionne que lors de la construction de packages binaires (en utilisant setup.py bdist ...). Cependant, cela ne fonctionne pas lors de la création de packages sources (en utilisant setup.py sdist ...).

Au lieu de s'appuyer sur package_data, il est recommandé d'utiliser un fichier MANIFEST.in. Le fichier MANIFEST.in fournit une liste de fichiers qui doivent être inclus dans les distributions binaires et sources. Cela garantit que les utilisateurs peuvent créer les deux types de distributions et inclure les données nécessaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn