Форум сайта python.su
0
Здравствуйте.
Нужна ваша помощь.
Решил собрать с помощью Distribute пакет.
Со следующей структурой:
pkg/ __init__.py script.py a/ __init__.py test.py c/ __init__.py test.py b/ __init__.py test
from pkg.a.test import test from pkg.a.c.test import test as three from pkg.b.test import test as two
#!/usr/bin/env python #-*- coding: utf-8 -*- from setuptools import setup, find_packages from os.path import join, dirname PACKAGE = 'pkg' setup( name='pkg', version='1.0', scripts = ['script.py'], packages= find_packages(), )
['a', 'b', 'a.c']
['pkg', 'pkg.a', 'pkg.b', 'pkg.a.c']
Отредактировано soln (Авг. 10, 2013 23:24:51)
Офлайн
25
А что вам мешает создать директорию (например pkg_dist) и положить в нее pkg/* и setup.py?
Офлайн
0
Да ничего.
Просто сначала мне показалось это избыточным. Сейчас мне так уже не кажется.
Но возник другой вопрос.
Если в представленой структуре:
a - это серверная часть или некий код который вносит даные в sql
b - это клиентская часть или web морда которая показывает даные из sql.
То есть, при разных архитектурах может быть необходимость как в обоих пакетах на одной машине так и только в одном из них.
В этом случае можно распростраять два раздельных пакета.
Но исходя из того что это некий единный продукт можно cделать как то так:
#!/usr/bin/env python #-*- coding: utf-8 -*- from setuptools import setup, find_packages from os.path import join, dirname ins = raw_input('Install a or b or all a/b/all') if ins == 'a': pkgs = ['pkg', 'pkg.a'] elif ins == 'b': pkgs = ['pkg', 'pkg.b'] else: pkgs = find_packages() setup( name='pkg', version='1.0', packages= pkgs , include_package_data=True, )
Отредактировано soln (Авг. 12, 2013 15:09:55)
Офлайн
20
Так не делается. Разделяйте на дистрибутивы типа: mypkg.common, mypkg.server, mypkg.client с `namespace_packages` “mypkg”. К тому же исходники всё равно все месте распространяться будут, яйца, да, можно собрать и так и эдак, но получится что яйцо с одинаковым именем проекта и версией по разному себя ведёт, в зависимости от сборки, шаблон может не выдержать. Так всё таки не делают.
Так же посмотрите `extras_require`, для клиента и сервера можно указать разные зависимости, а в ходе импорта (например) определять можно использовать здесь сервер (есть ли зависимости) или нет.
..bw
Офлайн
0
Спасибо. За ваши ответы.
Офлайн