Вероятно, лучший способ сделать это - использовать директиву setuptools
package_data
. Это означает использование setuptools
(или _ 4_) вместо distutils
, но это очень простое« обновление ».
Вот полный (но непроверенный) пример:
from setuptools import setup, find_packages
setup(
name='your_project_name',
version='0.1',
description='A description.',
packages=find_packages(exclude=['ez_setup', 'tests', 'tests.*']),
package_data={'': ['license.txt']},
include_package_data=True,
install_requires=[],
)
Обратите внимание на конкретные строки, которые здесь важны:
package_data={'': ['license.txt']},
include_package_data=True,
package_data
- это dict
имен пакетов (пусто = все пакеты) в список шаблонов (может включать глобусы). Например, если вы хотите указать только файлы в своем пакете, вы тоже можете это сделать:
package_data={'yourpackage': ['*.txt', 'path/to/resources/*.txt']}
Решением здесь является однозначно не переименовывать файлы, отличные от py
, с расширением .py
.
Дополнительную информацию см. В презентации Иэна Бикинга.
ОБНОВЛЕНИЕ: еще один [лучший] подход
Другой подход, который хорошо работает, если вы просто хотите контролировать содержимое исходного дистрибутива (sdist
) и иметь файлы вне пакета (например, каталог верхнего уровня), - это добавить файл MANIFEST.in
. Формат этого файла см. В документации Python.
С момента написания этого ответа я обнаружил, что использование MANIFEST.in
, как правило, менее неприятный подход, позволяющий просто убедиться, что в вашем исходном дистрибутиве (tar.gz
) есть нужные вам файлы.
Например, если вы хотите включить requirements.txt
с верхнего уровня, рекурсивно включите каталог «данных» верхнего уровня:
include requirements.txt
recursive-include data *
Тем не менее, чтобы эти файлы были скопированы во время установки в папку пакета внутри site-packages, вам необходимо указать include_package_data=True
функции setup()
. Дополнительную информацию см. В разделе Добавление файлов без кода.
person
Hans L
schedule
07.12.2009
data_files = [('', ['lgpl2.1_license.txt',]),]
помещает его в папку Python26. - person Ram Rachum   schedule 23.10.2009