Как мне сообщить distutils о пакетах в подкаталогах?

У меня есть setup.py файл для проекта, над которым я работаю, который должен собрать несколько сторонних пакетов, которые еще не выпущены в магазине сыра. Одним из них являются модули 'spine' и 'pyguts' из этого репозитория git:

https://github.com/terrysimons/spine-python

Обычно я могу установить вещи из gitgub, указав следующие элементы в моем файле setup.py (несколько строк были опущены для ясности):

#! /usr/bin/python
# Encoding: UTF-8

from setuptools import setup, find_packages


setup(
    # More stuff in here...
    dependency_links=[
            'https://github.com/bitcraft/PyTMX/archive/master.zip#egg=PyTMX',
        ],
    install_requires=[
        'PyTMX',
        ],
)

Тем не менее, это работает только потому, что PyTMX имеет setup.py файл в корне репозитория.

Если я попытаюсь сделать что-то подобное для spine а также pyguts репозитории, вот так:

#! /usr/bin/python
# Encoding: UTF-8

from setuptools import setup, find_packages

__version__ = '0.0.1'



setup(
    dependency_links=[
            'https://github.com/bitcraft/PyTMX/archive/master.zip#egg=PyTMX',
            'https://github.com/terrysimons/spine-python/archive/master.zip#egg=spine',
        ],
    install_requires=[
        'PyTMX',
        'spine',
        ],
)

Тогда distutils жалуется, когда я бегу python setup.py install:

Searching for spine
Best match: spine [unknown version]
Downloading https://github.com/terrysimons/spine-python/archive/master.zip#egg=spine
Processing master.zip
error: Couldn't find a setup script in /tmp/easy_install-OXsH6T/master.zip

Как я могу получить distutils для установки пакетов, когда setup.py файла нет в корне репозитория пакетов?

1 ответ

Насколько я знаю, подход заключается в том, чтобы включать модули в ваш пакет как подкаталоги, а не устанавливать их.

Очевидно, это означает, что вы не сможете получить к ним доступ непосредственно извне модуля. Тем не менее, вы сможете import my_module.my_submodule

Когда они будут готовы к отделению от главного модуля, просто создайте для них новые пакеты.

Другие вопросы по тегам