Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 27, 2012 20:18:51

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Почему встроенный Python не работает с PYD?

boost.python замечательно подходит и для вызова питона из C++. Посмотрите на boost::python::object



Офлайн

#2 Июнь 28, 2012 09:25:04

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему встроенный Python не работает с PYD?

Андрей Светлов
Py_SetProgramName и Py_SetPythonHome вызывали перед Py_Initialize?
нет, в примерах доков такого вроде не было, буду иметь ввиду.
вроде как их и не надо вызывать если питон стоит по дефолту?


Андрей Светлов
Да, нужно чтобы .lib, .dll и .pyd все вместе использовали или релизную или дебажную сборку.
я только не понял как должны генерится .pyd файлы, ибо дебажных *_d.pyd файлов я не нашел в папках после сборки.

питон статически у меня собрать получилось, но вот использовать в программе не получилось.
У меня есть главная программа .exe собирается с boost,opencv,fftw статически и есть модуль расширение .dll куда boost подключается статически(хотя я от него могу отказаться впринципе) и подключается питон.

как подключал: выбрал /MT, в инпут линкера python27.lib(для релиза), ну и прописал путь до библиотеки, проинклюдил python.h.
всё компилируется и запускается, только выдает ошибку R6034(причем пробовал подключать динамически /MD ошибка не уходит)
захожу в dependency walker смотрю зависимости своей .dll и там почему то python27.dll, только почему он там оказался если я линкуюсь статически?
Еще назрел вопрос, даже если я соберу питон статически( в надежде на то, что программа будет независима и сама в себе, т.е. не надо будет ставить интерпретатор питона на каждой машине где я хочу запустить программу) то мне всё равно нужно будет кидать в папку с программой мои скрипты .py и Lib папку от питона? (т.е. от статической линковки выигрыш получается небольшой убираются только папка Dll и python27.dll)
нельзя ли вообще всё встроить в программу?


boost::python::object
на данный момент у меня вроде всё готово в плане кода, но если буду расширять\усложнять, то присмотрюсь.



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Отредактировано mrgloom (Июнь 28, 2012 10:50:10)

Офлайн

#3 Июнь 28, 2012 10:45:10

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему встроенный Python не работает с PYD?


похоже ошибка R6034 была из-за строчки

if(!PyRun_SimpleString("import Image"))





___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

#4 Июнь 29, 2012 14:59:34

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Почему встроенный Python не работает с PYD?

Дебажный питон генерит _d.pyd Все .py файлы можно собрать в zip или даже прицепить этот zip в хвост .exe

Мне трудно советовать, не видя конфигурацию вашего проекта. Из общих соображений — рекомендую никогда не использовать статическую линковку. Сроблем с ней много, выгоды совсем не очевидны



Офлайн

#5 Июль 6, 2012 12:17:46

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему встроенный Python не работает с PYD?

я пробую компилировать проект
D:\Python-2.7.3\Python-2.7.3\PCbuild\pcbuild.sln
не меняя никакие настройки, но автоматически не генерятся .pyd файлы, может их надо как то отдельно?



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version