Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Собсно хочу использовать его в качестве языка логики своей программы плюс для написания аддонов “на лету”. Вопрос в том, что нужно иметь у конечно пользователя кроме python##.dll? Честно говоря, непонятно встроены ли модули, идущие в комплекте со стандартным питоновским дистрибутивом(например ctypes), в саму длл или их надо тоже иметь конечному пользователю для запуска уже написанного скрипта. 
Ну и вопрос вытекающий из первого - как объединить модули в один фаил. py2exe не вариант тк мне нужно чтобы питоновский скриптор(среда запуска питон скриптов) была в виде динамической dll которая будет подключаться к приложению, по потребности. Кроме того надеюсь наладить сильное взаимодействие свое кода C++ и Python.
Плюс хотелось бы узнать можно ли хранить модули в dll и запускать их потребности. PyRun_SimpleString интересен, но код будет выглядеть чудовищно.
Спс за ответы.
Отредактировано (Окт. 10, 2010 22:49:23)
Офлайн
 
							 20
  20   
								
								Python позволяет полностью, если не больше, конролировать процесс импорта модулей (в одном проекте я импортировал их из сети по некому протоколу с кешированием). В вашем случае я бы посоветовал ещё покурить CPython и попробовать собрать компилятор статически в свою DLL. Мне удавалось это под виндой (в своё время) при том что знания C и особенностей mingw32 очень и очень поверхностны. При адекватной статической сборке никаких внешних зависимостей не сохранится и все модули можно будет хранить там же, в ресурсах DLL (для этого свой импортёр понадобится). Во всяком случае “батарейки” имеет смысл запихать в свою DLL, так как они меняться будут только при смене версии Python.
..bw
Офлайн
 
							 7
  7   
								
								Какая проблема в том, чтобы взять где-нибудь питон и установить его совершенно бесплатно?
Офлайн
 
							 0
  0   
								
								Мысль понял, хотелось поподробнее на эту тему. В небезызвестной EVE Online, dll идет отдельно, но все модули упакованы в небольшое число фаилов. Хотелось бы узнать как они это сделали, и можно ли читать модули “прямо из себя”?
Счас изучаю вдобавок Cython. Но в связи с тем что компилируется по мануалу он только в MinGw, поддерживать будет намного сложнее чем простые ctypes.
А проблема отдельного установщика опять же в том что версии могут разойтись, да и напрягать конечного пользователя установкой чего либо не аис.
Отредактировано (Окт. 11, 2010 10:05:48)
Офлайн
 
							 8
  8   
								
								ЕМНИП в EVE Online используется stackless python - http://www.stackless.com/ - может сразу его имеет смысл использовать?
Ну и обычный вопрос - а Lua - не подходит?
Офлайн
 
							 0
  0   
								
								Просто python ближе. Lua без доп библиотек ограничен экспортированными в него функциями. Модель классов в питоне если не удобнее то гораздо ближе мне как C++ кодеру. Ну еще и ворох других причин.
Касаемо стаклесса - разве интерпретатор имеет отношение к сборке модулей в один фаил? Надо покурить мануал на тему статической сборки Python, однако ограничение в виде MinGw пока не радует.
Офлайн
 
							 0
  0   
								
								Нашел zipimport - курю его.
Офлайн
 
							 26
  26   
								
								Андрей Светлов начинал писать цикл статей на эту тему…
    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
…но, почему-то, не дописал. Жаль.
Офлайн
 
							 0
  0   
								
								Интересное обсуждение тут:
http://stackoverflow.com/questions/1830727/how-to-load-compiled-python-modules-from-memory
Но вопрос так и не решен - нужно ли с собой таскать СТАНДАРТНЫЕ модули. Похоже единственный образ узнать это проверить.
Офлайн
 
							 20
  20   
								
								> проверить
Давно пора, я так и подобрал необходимый минимум, а в каком виде они должны храниться – как сделаешь сам.
Статическая компиляция (как и любая другая самостоятельная сборка), это немного экстрим, зато появляется возможность выкинуть ненужное (сеть, сис. функции или даже доступ к файлам), а то и опасное из builtins (болтами прибитых нативных модулей).
..bw
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)