Как работает `setup.py sdist`?

Я пытаюсь сделать исходный дистрибутив моего проекта с помощью setup.py sdist. У меня уже есть работающий setup.py, который я могу установить. Но когда я делаю sdist, все, что я получаю, это еще одна папка my_project внутри моей папки my_project, файл MANIFEST, который меня не интересует, и zip-файл, содержащий два текстовых файла, а не мой проект.

Что я делаю неправильно? Где документация по sdist?

Обновление:

Вот мой setup.py:

#!/usr/bin/env python

import os
from distutils.core import setup
import distutils
from general_misc import package_finder

try:
    distutils.dir_util.remove_tree('build', verbose=True)
except:
    pass

my_long_description = \
'''\
GarlicSim is a platform for writing, running and analyzing simulations. It can
handle any kind of simulation: Physics, game theory, epidemic spread,
electronics, etc.
'''

my_packages = package_finder.get_packages('', include_self=True,
                                          recursive=True)

setup(
    name='GarlicSim',
    version='0.1',
    description='A Pythonic framework for working with simulations',
    author='Ram Rachum',
    author_email='[email protected]',
    url='http://garlicsim.org',
    packages=my_packages,
    package_dir={'': '..'},
    license= "LGPL 2.1 License",
    long_description = my_long_description,

)

try:
    distutils.dir_util.remove_tree('build', verbose=True)
except:
    pass

person Ram Rachum    schedule 23.10.2009    source источник
comment
Вы находитесь в каталоге своего пакета, когда запускаете его? Исходный код тоже находится в каталоге пакета?   -  person Michael Dillon    schedule 23.10.2009
comment
Майкл: Да и да. setup.py находится там же, где и самый верхний __init__.py.   -  person Ram Rachum    schedule 23.10.2009
comment
Обычно setup.py находится на один каталог выше, чем пакет с __init__.py.   -  person Eric Smith    schedule 08.05.2014


Ответы (2)


Тарек Зиаде объяснил это и связанные с ним инструменты упаковки программного обеспечения в этой статье под названием "Написание пакета на Python".

По сути, он создает простой пакет, создавая дерево выпусков, в которое копируется все необходимое для запуска пакета. Затем это дерево архивируется в один или несколько архивных файлов (часто просто создается один tar-шар). Архив в основном является копией исходного дерева.

person Michael Dillon    schedule 23.10.2009
comment
ссылка на статью битая - person thanos.a; 24.03.2021

команда «sdist» предназначена для создания «исходного» дистрибутива пакета. Обычно эту команду комбинируют с командой «загрузить» для распространения пакета через Pypi (например).

person jldupont    schedule 23.10.2009