При упаковке пакета Python с помощью setup.py, который использует setuptools:
from setuptools import setup
...
исходный дистрибутив, созданный:
python setup.py sdist
не только включает, как обычно, файлы, указанные в MANIFEST.in, но также безвозмездно включает все файлы, которые Subversion перечисляет как контролируемые версиями в каталоге пакета. Это сильно раздражает. Это не только затрудняет какой-либо явный контроль над тем, какие файлы распространяются вместе с моим пакетом, но и означает, что когда я собираю свой пакет после «svn export» вместо «svn checkout», содержимое моего package может быть совсем другим, так как без .svn метаданных setuptools будет выбирать, что включать.
Мой вопрос: как я могу отключить это ужасное поведение, чтобы «setuptools» обрабатывал мой проект одинаково, использую ли я Subversion, или контроль версий, о котором он никогда не слышал, или голое дерево, созданное с помощью «svn export», которое я создали в конце моего проекта, чтобы убедиться, что он правильно строится где-то, кроме моего рабочего каталога?
Лучшее, что мне удалось до сих пор, это уродливая обезьяна-патч:
from setuptools.command import sdist
del sdist.finders[:]
Но это Python, а не джунгли, поэтому, конечно, я хочу лучшее решение, в котором вообще не используются обезьяны. Как я могу укротить setuptools, отключить его магию и заставить его вести себя разумно, вместо этого глядя на видимые, предсказуемые правила в моем MANIFEST.py?