Как загрузить исходный пакет Python в PyPI? - PullRequest
10 голосов
/ 23 апреля 2009

Какая волшебная команда "python setup.py some_incantation_here" для загрузки пакета в PyPI в форме, которую можно загрузить, чтобы получить исходный пакет в его первоначальном виде?

У меня есть пакет с некоторым источником и несколькими файлами изображений (как package_data). Если я сделаю «setup.py sdist register upload», файлы .tar.gz исключат файлы изображений. Если я сделаю «setup.py bdist_egg register upload», яйцо содержит изображения, но исключает файл setup.py. Я хочу иметь возможность загружать файл, который является всего лишь моим проектом - он же "setup.py the_whole_freaking_thing register upload".

Возможно, лучший способ сделать это - вручную tar.gz каталог моего проекта и загрузить его через веб-интерфейс PyPI?

Предостережение: я стараюсь избегать сохранения простого проекта, который я только что создал, в своем репозитории SVN, а также в PyPI - кажется, что трата работы по отслеживанию его истории и файлов в двух местах.

1 Ответ

16 голосов
/ 23 апреля 2009

Когда вы выполняете команду «sdist», то, что контролирует список включаемых файлов, это ваш файл «MANIFEST.in», расположенный рядом с «setup.py», а не то, что вы перечислили в «package_data». Это как-то связано с шизофренической природой упаковочных решений Python сегодня; «sdist» работает от distutils в стандартной библиотеке, а «bdist_egg» управляется модулем setuptools .

Чтобы решить эту проблему, попробуйте создать файл MANIFEST.in рядом с файлом setup.py и передать ему следующее содержимое:

include *.jpg

Конечно, я представляю, что ваши "файлы изображений" - это реальные изображения, а не образы дисков или ISO-образы или что-то еще; вам, возможно, придется скорректировать приведенную выше строку, если я угадала неправильно! Но посмотрите Указание, какие файлы распространять раздел документации distutils, и посмотрите, не можете ли вы получить эти файлы в вашем исходном дистрибутиве .tar.gz! Удачи.

...