Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2014 20:48:54

Viktor1703
Зарегистрирован: 2013-04-10
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать зависимости

Допустим есть проект состоящий из нескольких файлов и модулей (не стандартных), как мне собрать все зависимости, в том числе и сам интерпретатор Python в одну папку для перемещения на другой ПК?

Офлайн

#2 Апрель 10, 2014 20:54:24

Viktor1703
Зарегистрирован: 2013-04-10
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать зависимости

py2exe, PyInstaller, cx_Freeze не предлагать, я о них знаю.

Отредактировано Viktor1703 (Апрель 10, 2014 20:54:51)

Офлайн

#3 Апрель 10, 2014 21:21:26

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Собрать зависимости

Viktor1703
одну папку для перемещения
Я так понимаю есть entry point и вы
1. хотите получить полный список подгружаемых модулей.
2. Хотите положить их по другому, но сохранив работоспособность.

1 Возможен такой код: пользователя запрашивают имя модуля, он его набирает (из головы) (более реалистичный вариант имя находится в файле конфигурации) и потом он импортируется. Очевидно, в общем случае информации в исходном коде недостаточно для построения списка необходимых модулей.
Для динамического анализа проблема хорошо описана, трудно перебрать все возможные ветви выполнения со всеми возможными входными данными.
2. Перемещение файлов может нарушить функционирование импорта.

Проще всего устроить поиск выражений import в исходных текстах и осуществить попытки импорта модулей…

По поводу перемещения. В чем проблема? Берете и копируете питон и папки. Обычно это не приводит к проблемам, или они минимальны и легко разрешимы. (Если вы конечно не будете пытаться запускать 64 рзрядный питон на 32 разрядной машине).



Отредактировано doza_and (Апрель 10, 2014 21:25:18)

Офлайн

#4 Апрель 10, 2014 21:33:35

Viktor1703
Зарегистрирован: 2013-04-10
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать зависимости

doza_and

Ну мне как бы нужно что - то подобное py2exe только без сборки в exe файл, просто в чистом виде исходники со всеми зависимостями в одной папке, если это не возможно, либо очень трудно сделать, так и быть, буду искать другие варианты, меня как - то предупреждали на счёт переносимости (Desktop) программ написанных на Python, либо искать и собирать все зависимости ручками (наверное год на это уйдёт), либо давать пользователю инструкцию по установке твоего приложения типа:

1. Скачать Python 2.7, установить
2. Скачать PyQt, установить (cmd.exe /C python setup.py install)


но это извините через ж***, можно конечно пользоваться и py2exe, PyInstaller, cx_Freeze, но вот только я ни где не могу найти информацию, могут ли они также собрать исполняющий файл например на Raspberry Pi.

Офлайн

#5 Апрель 10, 2014 21:46:09

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Собрать зависимости

Ничего сложного нет. Инструкция скачать поставить - это странно. Вы можете предоставить bat файл который поставит питон и все что надо. Если используемые модули нормальные то все встанет одной командой easy_install или pip. Все зависимости ручками прописывают разработчики пакетов и вас это не касается. Это конечно при наличии интернета. Если его нет это другой вопрос. Собирать самому неправильно. У пользователя может быть своя целевая архитектура вычислительной системы.

Собирать exe при помощи py2exe это последнее дело. Самый сложный и бесполезный вариант.
"Raspberry Pi работает под управлением Windows CE или свободных операционных систем Debian, Fedora, Gentoo, Arch Linux, RISC OS, AROS или FreeBSD." Почти очевидно что не могут. Для такого зоопарка операционных систем это вообще очень сложно будет. Определитесь что у вас там будет стоять.



Отредактировано doza_and (Апрель 10, 2014 21:47:52)

Офлайн

#6 Апрель 10, 2014 21:46:12

Viktor1703
Зарегистрирован: 2013-04-10
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать зависимости

Эх, такой хороший язык, жаль изначально заточен только для Web'a (если не ошибаюсь), придётся брать другой инструмент например FreePascal.

Отредактировано Viktor1703 (Апрель 10, 2014 21:48:06)

Офлайн

#7 Апрель 10, 2014 21:49:04

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Собрать зависимости

Viktor1703
если не ошибаюсь
Ошибаетесь. Он неплохо заточен на обработку данных. Администрирование систем и многое другое.
FreePascal вообще ОЧЕНЬ странный выбор. Но может оно чем-то лучше… Вам надо лучше описать свою задачу тогда можно будет ждать конструктивного обсуждения.



Отредактировано doza_and (Апрель 10, 2014 21:51:02)

Офлайн

#8 Апрель 10, 2014 21:53:07

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Собрать зависимости

Под Rasberry я могу понять выбор питона, C, Ada Но pascal?



Офлайн

#9 Апрель 10, 2014 22:04:04

Viktor1703
Зарегистрирован: 2013-04-10
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать зависимости

Да задачу я вроде описал. А что паскаль, очень даже хорош, выходные файлы конечно не такие маленькие получаются, но всё же, в C, Ada есть GUI? я думаю что нет и придётся качать и ставить самому, указывать переменные среды и т.д., а с этим вообще геморой, я не смог прикрутить Qt к MVS 2010 в Windows 8, 7, XP, а потом так же собирать все зависимости в ручную (*.so файлы которые использовал в проекте), можно конечно скомпилировать тот же Qt что бы получить статические библиотеки но опять же как - то у меня с Qt с самого начала не заладилось, я бы даже поставил PureBasic но вот Fantaisie Software пока не думает делать порт под ARM'ы, вообще Python классный язык, но вот переносимость конечных продуктов….

Офлайн

#10 Апрель 10, 2014 22:09:02

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Собрать зависимости

Viktor1703
Ну мне как бы нужно что - то подобное py2exe только без сборки в exe файл, просто в чистом виде исходники со всеми зависимостями в одной папке

Соберите все библиотеки в одну папку и сожмите zip.
Далее следуйте примеру из этой статьи http://habrahabr.ru/company/acronis/blog/208378/

Если вам необходимо распространять программу на PyQt в виде бинарного файла, можете скомпилировать ее при помощи nuitka соберет все необходимые библиотки.
nuitka --recurse-all program.py
http://nuitka.net/doc/user-manual.html

На RPi работать будет.

Почти то же самое можно сделать с Cython

python setup.py build_ext --inplace

cx_Freeze на RPi тоже работает.

Ну и самый нормальный вариант, запилите нормальный пакет залейте его на pypi.python.org
И пользователю придется только набрать руками заклинание в консоле:
pip install my-super-puper-package

Отредактировано Alen (Апрель 10, 2014 22:14:41)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version