Название: [PythonQt] Проблема с загрузкой собственных модулей Отправлено: kolob от Октябрь 01, 2013, 16:41 Всем привет.
Нуждаюсь в помощи. Использую PythonQt для решения одной задачи в программе. Чтобы ее решить своих модулей недостаточно и необходимо подключить сторонние. Поэтому пытаюсь их загрузить так: Цитировать PythonQt::init(); На что мне компилятор выдает:PythonQtObjectPtr mainModul = PythonQt::self()->getMainModule(); PythonQtImporter self; PyObject *modul = PythonQtImport::getModuleCode(&self, "module", pathModule); Цитировать ошибка: undefined reference to `PythonQtImport::getModuleCode(_PythonQtImporter*, char const*, QString&)' Понятно дело не линкуется, но почему. Либы в проекте подключены:Цитировать win32:CONFIG(release, debug|release): LIBS += -LC:/PythonQt2.1_Qt4.8/lib/ -lPythonQt -lPythonQt_QtAll Посмотрел как в примерах.else:win32:CONFIG(debug, debug|release): LIBS += -LC:/PythonQt2.1_Qt4.8/lib/ -lPythonQt_d -lPythonQt_QtAll_d include(C:/PythonQt2.1_Qt4.8/build/common.prf) include(C:/PythonQt2.1_Qt4.8/build/PythonQt.prf) include(C:/PythonQt2.1_Qt4.8/build/PythonQt_QtAll.prf) Собирал PythonQt как описано здесь (http://www.prog.org.ru/index.php?topic=17773.msg119707#msg119707) Название: Re: [PythonQt] Проблема с загрузкой собственных модулей Отправлено: sergek от Октябрь 02, 2013, 11:47 У меня тоже не линкуется. Попробуйте задать вопрос Флориану http://sourceforge.net/p/pythonqt/discussion/631393/ (http://sourceforge.net/p/pythonqt/discussion/631393/).
Можно импортировать модули, используя PythonQt::importModule(). Для скриптов, включенных в файл ресурсов, имя начинается с ":". Еще можно просто выполнить скрипт: Код: mainModule.evalScript(QString("sys.path.append('%1')\n").arg(QDir::currentPath())); Название: Re: [PythonQt] Проблема с загрузкой собственных модулей Отправлено: kolob от Октябрь 21, 2013, 11:27 Еще вопрос.
Даже не знаю как его сформулировать. Нужно использовать программу, которая вызывает py-скрипты на машине где не установлен интерпретатор Python? Вот как то так. Название: Re: [PythonQt] Проблема с загрузкой собственных модулей Отправлено: sergek от Октябрь 21, 2013, 16:41 Нужно использовать программу, которая вызывает py-скрипты на машине где не установлен интерпретатор Python? Не нужно ;)Название: Re: [PythonQt] Проблема с загрузкой собственных модуl Отправлено: kolob от Октябрь 22, 2013, 04:16 Цитировать Не нужно Подмигивающий Как то не так написал. Понятное дело что в программе уже встроен интерпретатор. Это был не вопрос. Я не знал как это сделать. Ну вся запара была в пакетах, которые идут со стандартным Python (os, copy, abc и т.д.) Они были нужны для другого пакета, который работает с excel файлами. Я решил эту проблему скопировав нужные пакеты, заархивировал и поместил в ресурсы, а там уже при исполнении программы распаковывал в директорию с исполняемой программой. Название: Re: [PythonQt] Проблема с загрузкой собственных модуl Отправлено: kai666_73 от Октябрь 22, 2013, 10:54 Цитировать Не нужно Подмигивающий Как то не так написал. Понятное дело что в программе уже встроен интерпретатор. Это был не вопрос. Я не знал как это сделать. Ну вся запара была в пакетах, которые идут со стандартным Python (os, copy, abc и т.д.) Они были нужны для другого пакета, который работает с excel файлами. Я решил эту проблему скопировав нужные пакеты, заархивировал и поместил в ресурсы, а там уже при исполнении программы распаковывал в директорию с исполняемой программой. Костыль, однако. Предлагаю другое решение: 1. В папке с екзешником создаем директорию (к примеру) python 2. Копируем в нее из директории куда установлен Python папочки DLLs и Lib 3. В программе, сразу после инициализации PythonQt, добавляем следующий код: Код: PythonQt::self()->addSysPath(QApplication::applicationDirPath() + "/python/DLLs"); Название: Re: [PythonQt] Проблема с загрузкой собственных модуl Отправлено: kolob от Октябрь 23, 2013, 16:53 Костыль, однако. Все это, я почти так и сделал. А архив с py-пакетами в ресурсах и дальнейшее их распаковка более надежнее. Предлагаю другое решение: 1. В папке с екзешником создаем директорию (к примеру) python 2. Копируем в нее из директории куда установлен Python папочки DLLs и Lib 3. В программе, сразу после инициализации PythonQt, добавляем следующий код: Код: PythonQt::self()->addSysPath(QApplication::applicationDirPath() + "/python/DLLs"); А если какой либо нерадивый пользователь, удалит какой либо файл в этой директории или всю директорию. А у меня при запуске проверялась эта папка на целостность и в случае чего заново извлекал в директорию все необходимые пакеты. Название: Re: [PythonQt] Проблема с загрузкой собственных модулей Отправлено: kai666_73 от Октябрь 24, 2013, 10:37 Ну да, наверно. По мне дак, - сие (защита от нерадивого пользователя) забота инсталлятора, а не установленной программы...
То бишь сломал что-то вредный пользователь, пускай переустанавливает. Название: Re: [PythonQt] Проблема с загрузкой собственных модулей Отправлено: kolob от Октябрь 24, 2013, 13:05 Цитировать То бишь сломал что-то вредный пользователь, пускай переустанавливает. Согласен.Но мне приходится распространять прогу в папке со всеми имеющимися dll. Поэтому так более удобнее. Название: Re: [PythonQt] Проблема с загрузкой собственных модулей Отправлено: kai666_73 от Октябрь 24, 2013, 13:39 Но мне приходится распространять прогу в папке со всеми имеющимися dll. Поэтому так более удобнее. Так это же и есть полу-авто-копи-инсталлятор. Что мешает вложить в распространяемую папку директории со стандартными ПЫ-скриптами/либами ??? |