Подтвердить что ты не робот

2 метода для включения файлов в дистрибутив Python: что лучше?

Я работаю над упаковкой небольшого проекта Python в виде файла zip или egg, чтобы его можно было распространять. Я столкнулся с двумя способами включения файлов конфигурации проекта, оба из которых, похоже, дают одинаковые результаты.

Метод 1:

Включите этот код в setup.py:

from distutils.core import setup

setup(name='ProjectName', 
      version='1.0', 
      packages=['somePackage'],
      data_files = [('config', ['config\propFiles1.ini', 
                                'config\propFiles2.ini', 
                                'config\propFiles3.ini'])]
      )

Метод 2:

Включите этот код в setup.py:

from distutils.core import setup

setup(name='ProjectName', 
      version='1.0', 
      packages=['somePackage']
      )

Затем создайте файл MANIFEST.in с этой строкой в ​​нем:

include config\* 

Есть ли разница между методами? Какой из них предпочтительнее? Я склоняюсь к первому, потому что тогда никакой файл MANIFEST.in вообще не нужен. Тем не менее, в первом методе вы должны указать каждый файл отдельно, а во втором вы можете просто включить всю папку. Есть ли что-нибудь еще, что я должен принимать во внимание? Какая стандартная практика?

4b9b3361

Ответ 1

MANIFEST.in контролирует, какие файлы помещаются в дистрибутив zip файла, когда вы вызываете python setup.py sdist. Он не контролирует установленные. data_files (или лучше package_data) контролирует, какие файлы установлены (и я думаю, что также файлы включены в zip файл). Используйте MANIFEST.in для файлов, которые вы не будете устанавливать, например документации, и package_data для файлов, которые вы используете, которые не являются кодом Python (например, изображение или шаблон).