Найти - Пользователи
Полная версия: Питон в качестве скриптового языка.
Начало » Python для новичков » Питон в качестве скриптового языка.
1 2
Miatar
Собсно хочу использовать его в качестве языка логики своей программы плюс для написания аддонов “на лету”. Вопрос в том, что нужно иметь у конечно пользователя кроме python##.dll? Честно говоря, непонятно встроены ли модули, идущие в комплекте со стандартным питоновским дистрибутивом(например ctypes), в саму длл или их надо тоже иметь конечному пользователю для запуска уже написанного скрипта.
Ну и вопрос вытекающий из первого - как объединить модули в один фаил. py2exe не вариант тк мне нужно чтобы питоновский скриптор(среда запуска питон скриптов) была в виде динамической dll которая будет подключаться к приложению, по потребности. Кроме того надеюсь наладить сильное взаимодействие свое кода C++ и Python.
Плюс хотелось бы узнать можно ли хранить модули в dll и запускать их потребности. PyRun_SimpleString интересен, но код будет выглядеть чудовищно.

Спс за ответы.
bw
Python позволяет полностью, если не больше, конролировать процесс импорта модулей (в одном проекте я импортировал их из сети по некому протоколу с кешированием). В вашем случае я бы посоветовал ещё покурить CPython и попробовать собрать компилятор статически в свою DLL. Мне удавалось это под виндой (в своё время) при том что знания C и особенностей mingw32 очень и очень поверхностны. При адекватной статической сборке никаких внешних зависимостей не сохранится и все модули можно будет хранить там же, в ресурсах DLL (для этого свой импортёр понадобится). Во всяком случае “батарейки” имеет смысл запихать в свою DLL, так как они меняться будут только при смене версии Python.

..bw
Isem
Какая проблема в том, чтобы взять где-нибудь питон и установить его совершенно бесплатно?
Miatar
Мысль понял, хотелось поподробнее на эту тему. В небезызвестной EVE Online, dll идет отдельно, но все модули упакованы в небольшое число фаилов. Хотелось бы узнать как они это сделали, и можно ли читать модули “прямо из себя”?

Счас изучаю вдобавок Cython. Но в связи с тем что компилируется по мануалу он только в MinGw, поддерживать будет намного сложнее чем простые ctypes.

А проблема отдельного установщика опять же в том что версии могут разойтись, да и напрягать конечного пользователя установкой чего либо не аис.
ziro
ЕМНИП в EVE Online используется stackless python - http://www.stackless.com/ - может сразу его имеет смысл использовать?

Ну и обычный вопрос - а Lua - не подходит?
Miatar
Просто python ближе. Lua без доп библиотек ограничен экспортированными в него функциями. Модель классов в питоне если не удобнее то гораздо ближе мне как C++ кодеру. Ну еще и ворох других причин.

Касаемо стаклесса - разве интерпретатор имеет отношение к сборке модулей в один фаил? Надо покурить мануал на тему статической сборки Python, однако ограничение в виде MinGw пока не радует.
Miatar
Нашел zipimport - курю его.
ZZZ
Андрей Светлов начинал писать цикл статей на эту тему…
http://asvetlov.blogspot.com/2010/05/blog-post.html
http://asvetlov.blogspot.com/2010/05/2.html
http://asvetlov.blogspot.com/2010/05/3.html
…но, почему-то, не дописал. Жаль.
Miatar
Интересное обсуждение тут:
http://stackoverflow.com/questions/1830727/how-to-load-compiled-python-modules-from-memory

Но вопрос так и не решен - нужно ли с собой таскать СТАНДАРТНЫЕ модули. Похоже единственный образ узнать это проверить.
bw
> проверить
Давно пора, я так и подобрал необходимый минимум, а в каком виде они должны храниться – как сделаешь сам.
Статическая компиляция (как и любая другая самостоятельная сборка), это немного экстрим, зато появляется возможность выкинуть ненужное (сеть, сис. функции или даже доступ к файлам), а то и опасное из builtins (болтами прибитых нативных модулей).

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB