2 метода включения файлов в дистрибутив Python: что лучше? - PullRequest
13 голосов
/ 03 июня 2010

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

Метод 1:

Включить этот код в настройку.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 вообще не нужен.Однако, в первом методе вы должны указать каждый файл отдельно, а во втором вы можете просто включить всю папку.Есть ли что-то еще, что я должен принимать во внимание?Какая стандартная практика?

1 Ответ

26 голосов
/ 03 июня 2010

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

...