как может setup.py sdist разыменовать символические ссылки? - PullRequest
2 голосов
/ 03 мая 2019

setup.cfg раздел data_files содержит каталог с символическими ссылками. При запуске python setup.py sdist полученный дистрибутив не содержит символических ссылок, они игнорируются. Вот содержание setup.py, основанное на pbr :

#!/usr/bin/env python

from setuptools import setup

setup(
    setup_requires=['pbr'],
    pbr=True,
)

Было бы неплохо разыменовать символические ссылки и вместо этого включить фактический файл. Распределение будет больше, потому что файлы дублируются, но будет завершено.

Глядя на источники sdist , похоже, что символические ссылки всегда игнорируются:

$ python setup.py sdist
...
'molecule/debops' not a regular file -- skipping
...

Есть ли способ, чтобы убедить sdist разыменовать символические ссылки?

1 Ответ

1 голос
/ 04 мая 2019

Команда MANIFEST.in graft , к сожалению, отсутствует в документации Python 3 , но ее можно найти в источниках .Он вызывает include_pattern и findall , который следует по символическим ссылкам .Поэтому достаточно добавить следующую строку в MANIFEST.in:

graft molecule/

, чтобы убедиться, что дерево molecule/ включено в дистрибутив и что будут следовать все символические ссылки.Это действительно приводит к дублированию контента, но результат завершен.

Основная причина подавления символьных ссылок заключается в том, что (в отличие от sdist) pbr обходится с каталогами, упомянутыми в data_files , безследующие символические ссылки .Поэтому он создаст список путей в файле SOURCES.txt, которые содержат символические ссылки.И они будут игнорироваться sdist и никогда не попадут в дистрибутив.

...