Miatar
Окт. 10, 2010 22:44:10
Собсно хочу использовать его в качестве языка логики своей программы плюс для написания аддонов “на лету”. Вопрос в том, что нужно иметь у конечно пользователя кроме python##.dll? Честно говоря, непонятно встроены ли модули, идущие в комплекте со стандартным питоновским дистрибутивом(например ctypes), в саму длл или их надо тоже иметь конечному пользователю для запуска уже написанного скрипта.
Ну и вопрос вытекающий из первого - как объединить модули в один фаил. py2exe не вариант тк мне нужно чтобы питоновский скриптор(среда запуска питон скриптов) была в виде динамической dll которая будет подключаться к приложению, по потребности. Кроме того надеюсь наладить сильное взаимодействие свое кода C++ и Python.
Плюс хотелось бы узнать можно ли хранить модули в dll и запускать их потребности. PyRun_SimpleString интересен, но код будет выглядеть чудовищно.
Спс за ответы.
bw
Окт. 11, 2010 06:25:59
Python позволяет полностью, если не больше, конролировать процесс импорта модулей (в одном проекте я импортировал их из сети по некому протоколу с кешированием). В вашем случае я бы посоветовал ещё покурить CPython и попробовать собрать компилятор статически в свою DLL. Мне удавалось это под виндой (в своё время) при том что знания C и особенностей mingw32 очень и очень поверхностны. При адекватной статической сборке никаких внешних зависимостей не сохранится и все модули можно будет хранить там же, в ресурсах DLL (для этого свой импортёр понадобится). Во всяком случае “батарейки” имеет смысл запихать в свою DLL, так как они меняться будут только при смене версии Python.
..bw
Isem
Окт. 11, 2010 09:47:35
Какая проблема в том, чтобы взять где-нибудь питон и установить его совершенно бесплатно?
Miatar
Окт. 11, 2010 09:49:48
Мысль понял, хотелось поподробнее на эту тему. В небезызвестной EVE Online, dll идет отдельно, но все модули упакованы в небольшое число фаилов. Хотелось бы узнать как они это сделали, и можно ли читать модули “прямо из себя”?
Счас изучаю вдобавок Cython. Но в связи с тем что компилируется по мануалу он только в MinGw, поддерживать будет намного сложнее чем простые ctypes.
А проблема отдельного установщика опять же в том что версии могут разойтись, да и напрягать конечного пользователя установкой чего либо не аис.
ziro
Окт. 11, 2010 10:02:52
ЕМНИП в EVE Online используется stackless python -
http://www.stackless.com/ - может сразу его имеет смысл использовать?
Ну и обычный вопрос - а Lua - не подходит?
Miatar
Окт. 11, 2010 10:15:14
Просто python ближе. Lua без доп библиотек ограничен экспортированными в него функциями. Модель классов в питоне если не удобнее то гораздо ближе мне как C++ кодеру. Ну еще и ворох других причин.
Касаемо стаклесса - разве интерпретатор имеет отношение к сборке модулей в один фаил? Надо покурить мануал на тему статической сборки Python, однако ограничение в виде MinGw пока не радует.
Miatar
Окт. 11, 2010 10:20:11
Нашел zipimport - курю его.
ZZZ
Окт. 11, 2010 10:32:50
Miatar
Окт. 11, 2010 11:06:30
Интересное обсуждение тут:
http://stackoverflow.com/questions/1830727/how-to-load-compiled-python-modules-from-memoryНо вопрос так и не решен - нужно ли с собой таскать СТАНДАРТНЫЕ модули. Похоже единственный образ узнать это проверить.
bw
Окт. 11, 2010 13:11:35
> проверить
Давно пора, я так и подобрал необходимый минимум, а в каком виде они должны храниться – как сделаешь сам.
Статическая компиляция (как и любая другая самостоятельная сборка), это немного экстрим, зато появляется возможность выкинуть ненужное (сеть, сис. функции или даже доступ к файлам), а то и опасное из builtins (болтами прибитых нативных модулей).
..bw