Как мне сообщить 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
Когда они будут готовы к отделению от главного модуля, просто создайте для них новые пакеты.