LINUX.ORG.RU

[python] аналоги distutils

 


0

1

Добрый день, дорогие аналитики ЛОРа!

У меня есть проект на python (с использованием PyQt) который хочу распространять. Структура проекта: http://pastebin.com/TSyw2Qsq

Попробовал distutils и он меня не удовлетворил:

1. Избыточность (MANIFEST.in, setup.cfg, setup.py)

2. Из setup.py не знаю на этапе build куда будет установлен пакет (data - иконки, переводы).

3. В дебиан-based дистрибутивах приходится использовать костыль ( --install-layout=deb), производства deb пакетов нет.

4. не понятно как сделать вменяемый инсталлер под win32 (хотя возможность декларируется)

5. Не знаю как лучше поддерживать разработку без установки (PYTHONPATH ?)

В связи с этим, прошу совета в выборе менее корявого аналога distutils.


Поразительно!
А еще в первом классе ты не знал всю табличку умножения... До сих пор не знаешь ?

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

нет не знаю. поэтому и спрашиваю :-) Есть ещё, кроме юмора, что сказать?

bukaka
() автор топика
Ответ на: комментарий от hizel

ага, а потом предложившего заклюют

bukaka
() автор топика

Пользуюсь setuptools. Файлы приложения храню в пакетах, чтобы не собирать их потом по ФС, тоже не осилил этот момент. Делать deb это задача мейнтейнера дистра.

5. Не знаю как лучше поддерживать разработку без установки

python setup.py develop

baverman ★★★
()

4. не понятно как сделать вменяемый инсталлер под win32 (хотя возможность декларируется)

python setup.py bdist_wininst

baverman ★★★
()
Ответ на: комментарий от bukaka

thirdpaty как туда подпихнуть?

1. Прозреваю, писать post-build dist команду, которая скопирует нужные зависимости в build/lib и соответственно изменит packages.

2. Можно сделать отдельный setup.py с дирой с симлинками на нужный пакет и всеми зависимостями.

3. Проблему обновления своих пакетов для вин-рабочих станций (да вообще для любых) я решил поднятием корпоративного pypi репозитория. В него задеплоил все нужные сторонние библиотеки и собранные source-пакеты. А на клиентах стоит pip и волшебный батник на самба шаре, который делает pip install -Ui ... Плюсы:

* Пакет собирается один раз сразу для всех платформ. (Linux, Windows/py26/py27)

* Очень быстрая и тривиальная процедура обновления для хомяков: ткнуть ярлык на рабочем столе.

* В будущем для всех скриптов можно прикрутить автоматическое обновление.

baverman ★★★
()

>3. В дебиан-based дистрибутивах приходится использовать костыль ( --install-layout=deb), производства deb пакетов нет.

Скрипт для сборки напиши, там много ума не надо.

4. не понятно как сделать вменяемый инсталлер под win32 (хотя возможность декларируется)

Для pyqt я использовал nsis, который в виндовсе копировал что надо и запускал инсталляторы third-party пакетов в себе. Немного потыкав его скрипты, можно сделать всё достаточно прилично, например всякие там проверки версий и т.д.

5. Не знаю как лучше поддерживать разработку без установки (PYTHONPATH ?)

virtualenv

anonymous
()
Ответ на: комментарий от mono

Почитал про Waf, спасибо большое за совет, довольно интересная сборочная система. Внедрил. Конечно не без проблем (нет в комплекте pyqt4 Tool, пришлось самому писать)

Может быть в курсе как получить доступ к результатам configure (интересует программа, путь к которой лежит в переменной) из новой команды?

Пример:

def update_ts(ctx): # type of ctx: <class 'waflib.Context.Context'>
    # вот отседа нужно узнать find_program из configure,
    # можно, конечно, ещё раз сделать find_program,
    # но не аккуратно как то.
    ctx.exec_command([ctx.env.PYLUPDATE, ...]) 
bukaka
() автор топика
Ответ на: комментарий от bukaka

к сожалению, я не профессионал в waf&python и опыт использования waf совсем маленький, сорри :)

mono ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.