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

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

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

13
задан froadie 8 June 2010 в 14:45
поделиться

1 ответ

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

27
ответ дан 1 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: