Viktor1703
Апрель 10, 2014 20:48:54
Допустим есть проект состоящий из нескольких файлов и модулей (не стандартных), как мне собрать все зависимости, в том числе и сам интерпретатор Python в одну папку для перемещения на другой ПК?
Viktor1703
Апрель 10, 2014 20:54:24
py2exe, PyInstaller, cx_Freeze не предлагать, я о них знаю.
doza_and
Апрель 10, 2014 21:21:26
Viktor1703
одну папку для перемещения
Я так понимаю есть entry point и вы
1. хотите получить полный список подгружаемых модулей.
2. Хотите положить их по другому, но сохранив работоспособность.
1 Возможен такой код: пользователя запрашивают имя модуля, он его набирает (из головы) (более реалистичный вариант имя находится в файле конфигурации) и потом он импортируется. Очевидно, в общем случае информации в исходном коде недостаточно для построения списка необходимых модулей.
Для динамического анализа проблема хорошо описана, трудно перебрать все возможные ветви выполнения со всеми возможными входными данными.
2. Перемещение файлов может нарушить функционирование импорта.
Проще всего устроить поиск выражений import в исходных текстах и осуществить попытки импорта модулей…
По поводу перемещения. В чем проблема? Берете и копируете питон и папки. Обычно это не приводит к проблемам, или они минимальны и легко разрешимы. (Если вы конечно не будете пытаться запускать 64 рзрядный питон на 32 разрядной машине).
Viktor1703
Апрель 10, 2014 21:33:35
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.
doza_and
Апрель 10, 2014 21:46:09
Ничего сложного нет. Инструкция скачать поставить - это странно. Вы можете предоставить bat файл который поставит питон и все что надо. Если используемые модули нормальные то все встанет одной командой easy_install или pip. Все зависимости ручками прописывают разработчики пакетов и вас это не касается. Это конечно при наличии интернета. Если его нет это другой вопрос. Собирать самому неправильно. У пользователя может быть своя целевая архитектура вычислительной системы.
Собирать exe при помощи py2exe это последнее дело. Самый сложный и бесполезный вариант.
"Raspberry Pi работает под управлением Windows CE или свободных операционных систем Debian, Fedora, Gentoo, Arch Linux, RISC OS, AROS или FreeBSD." Почти очевидно что не могут. Для такого зоопарка операционных систем это вообще очень сложно будет. Определитесь что у вас там будет стоять.
Viktor1703
Апрель 10, 2014 21:46:12
Эх, такой хороший язык, жаль изначально заточен только для Web'a (если не ошибаюсь), придётся брать другой инструмент например FreePascal.
doza_and
Апрель 10, 2014 21:49:04
Viktor1703
если не ошибаюсь
Ошибаетесь. Он неплохо заточен на обработку данных. Администрирование систем и многое другое.
FreePascal вообще ОЧЕНЬ странный выбор. Но может оно чем-то лучше… Вам надо лучше описать свою задачу тогда можно будет ждать конструктивного обсуждения.
doza_and
Апрель 10, 2014 21:53:07
Под Rasberry я могу понять выбор питона, C, Ada Но pascal?
Viktor1703
Апрель 10, 2014 22:04:04
Да задачу я вроде описал. А что паскаль, очень даже хорош, выходные файлы конечно не такие маленькие получаются, но всё же, в C, Ada есть GUI? я думаю что нет и придётся качать и ставить самому, указывать переменные среды и т.д., а с этим вообще геморой, я не смог прикрутить Qt к MVS 2010 в Windows 8, 7, XP, а потом так же собирать все зависимости в ручную (*.so файлы которые использовал в проекте), можно конечно скомпилировать тот же Qt что бы получить статические библиотеки но опять же как - то у меня с Qt с самого начала не заладилось, я бы даже поставил PureBasic но вот Fantaisie Software пока не думает делать порт под ARM'ы, вообще Python классный язык, но вот переносимость конечных продуктов….
Alen
Апрель 10, 2014 22:09:02
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