Название: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Апрель 20, 2011, 20:36 Коллеги, пытаюсь собрать PythonQt с иcпользованием Qt SDK для Windows. На этапе сборки - ошибки:
Код: cd src\ && C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile Имен, которых не находит линковщик, в библиотеке импорта python26.lib нет. Версии: PythonQt 2.0.1, Python 2.6.6, Qt SDK OPenSource 2010.05 или 1.1 beta. В чем проблема? Есть кто-нибудь, у кого есть опыт использования PythonQt? Название: Re: Сборка PythonQt под Windows Отправлено: Wlad_C от Апрель 21, 2011, 10:57 Функции, которые не находит линковщик, это функции Python.
Чтобы собрать PythonQt надо: 1. установить сам Питон 2. настроить файлы common.prf, python.prf, PythonQt.prf Название: Re: Сборка PythonQt под Windows Отправлено: sergek от Апрель 21, 2011, 16:35 Цитировать Функции, которые не находит линковщик, это функции Python. Положим, не только функции, но и переменные. И не факт, что Питона. Попробуйте, например, найти в общем индексе документации переменную Py_NoSiteFlag. Не найдете, а она есть... ;-)Цитировать Чтобы собрать PythonQt надо: Да знаю я... Из моего письма разве не понятно, что питон стоит 2.6.6? И prf настроены как надо.1. установить сам Питон 2. настроить файлы common.prf, python.prf, PythonQt.prf А вы сами не пробовали? Попробуйте, может, у Вас получится. Времени всего полчаса потребуется (если Qt SDK opensource уже стоит). Вот ссылки на дистрибутивы: http://sourceforge.net/projects/pythonqt/files/pythonqt/PythonQt-2.0.1/PythonQt2.0.1.zip/download (http://sourceforge.net/projects/pythonqt/files/pythonqt/PythonQt-2.0.1/PythonQt2.0.1.zip/download) http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi (http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi) Название: Re: Сборка PythonQt под Windows Отправлено: asvil от Апрель 21, 2011, 16:42 Помню, что Пайтон собирается msvc 6.0, а вот Qt - mingw. Может ли Ваша проблема заключатся в знаменитой несовместимости макрософт линкера с остальными участниками программистского цирка?
Название: Re: Сборка PythonQt под Windows Отправлено: sergek от Апрель 21, 2011, 21:55 Помню, что Пайтон собирается msvc 6.0, а вот Qt - mingw. Может ли Ваша проблема заключатся в знаменитой несовместимости макрософт линкера с остальными участниками программистского цирка? Это я тоже помню. Но вот беда, если посмотреть список всех символов, содержащихся в библиотеке питона:> nm python26.lib >> symbols.txt то нет там ни одного имени, о котором говорит линковщик... И я не могу это объяснить. Может, кто-нибудь все же попробует собрать PythonQt? А я попробую собрать Питона мингвой. Название: Re: Сборка PythonQt под Windows Отправлено: asvil от Апрель 22, 2011, 10:20 Таки *.lib файлы не поттягиваются MinGw до сих пор. Создайте *.a файл из *.dll/lib.
Код: reimp python.lib Код: dlltool -k -dpython.def -lpython.a Название: Re: Сборка PythonQt под Windows Отправлено: sergek от Апрель 22, 2011, 15:23 Таки *.lib файлы не поттягиваются MinGw до сих пор. Вот сейчас подключил к проекту python26.lib, в программе сделал питоновские вызовы Py_Initialize () и Py_Finalize (). Компоновщик проглотил это молча, программа отработала.В чем отсутствие поддержки lib? Название: Re: Сборка PythonQt под Windows Отправлено: asvil от Апрель 22, 2011, 15:53 Таки, значит поттягиваются. Только у вас в неразрешенных зависимостях нет того, что Вы сейчас назвали.
У Вас вроде не "резолвятся" указатели на extern переменные, а не на функции. Соотвественно сделайте хоть lib хоть a чтобы механизмы друг друга нашли. Название: Re: Сборка PythonQt под Windows Отправлено: sergek от Апрель 26, 2011, 11:09 Все-таки проблема несовместимости библиотеки импорта python26.lib, поставляемой в составе дистрибутива Питона, с mingw.
Собрать PythonQt удалось. Проверю, выложу рецепт. Вкратце - создание библиотеки импорта для mingw из python2.dll с использованием утилит pexports, dlltool. Прошу прощения у Филоненко М. - его сомнения я опроверг неправильно поставленным экспериментом :( Название: Re: Сборка PythonQt под Windows Отправлено: sergek от Апрель 26, 2011, 18:43 Обещанный рецепт сборки PythonQt (232 revision).
1) Используем Qt SDK 1.2.1 (Open Source), установленный в C:\QtSDK, Windows 7 домашняя базовая 64 бит. Для WinXP примерно все то же самое. 2) Скачиваем архив с утилитами mingw (MinGW Utilities 0.3 Windows Binary) http://olex.openlogic.com/packages/mingw-utils/0.3#package_detail_tabs (http://olex.openlogic.com/packages/mingw-utils/0.3#package_detail_tabs) Разархивируем каталоги bin и doc полученного архива в соответствующие каталоги C:\QtSDK\mingw\bin и doc. 3) Ставим Python 2.6 из дистрибутива в каталог по умолчанию C:\Python26 http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi (http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi) 4) В командной строке из состава Qt SDK переходим в каталог C:\Python26\libs и выполняем: Setting up environment for Qt usage... C:\windows\system32>cd C:\Python26\libs C:\Python26\libs>pexports C:\Windows\SysWOW64\python26.dll >python26.def C:\Python26\libs>dlltool --dllname python26.dll --def python26.def --output-lib libpython26.a При использовании утилиты pexports путь до dll указывать нужно, иначе получим ошибку "pexports: python26.dll: could not load PE image". Для dlltool это не обязательно. Путь у меня указан для Windows7. В WinXP библиотека лежит в system32. Результатом этих шагов является библиотека импорта libpython26.a, которую и будем использовать для сборки PythonQt. 5) Скачиваем исходники PythonQt из SVN репозитория (дистрибутив весьма устарел): http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/ (http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/) и разархивируем в каталог C:\PythonQt2.1 6) Корректируем def-файлы в каталоге C:\PythonQt2.1\build. python.prf - указываем в явном виде каталоги и файлы. Сюда же прописываем путь до исходников PythonQt (наверное, это не очень здорово, но зато работает под Windows7). Поскольку отладочной версии Питона в дистрибутиве нет, то для отладки и релиза используем одну и ту же библиотеку импорта: Код: win32:INCLUDEPATH += c:/Python26/include C:/PythonQt2.1/src common.prf - раскомментируем строку (хотя это можно и не делать, наверное - собирать будем в креаторе): Код: CONFIG += debug_and_release build_all PythonQt.prf - корректируем имя и расширение библиотеки: Код: win32::LIBS += $$PWD/../lib/libPythonQt$${DEBUG_EXT}.a Код: win32::LIBS += $$PWD/../lib/libPythonQt_QtAll$${DEBUG_EXT}.a 7) Запускаем Qt Creator и открываем проект C:\PythonQt2.1\PythonQt.pro. При открытии выбираем создание конфигурации одной отладочной и одной релизной сборки для профиля "Qt 4.8.1 for Desktop - MinGW (Qt SDK)", каталог сборки - C:\PythonQt2.1. Сохраняем и выполняем qmake. Обратите внимание - будет создан каталог C:\PythonQt2.1\lib, там будут размещаться собранные библиотеки и исполняемые файлы примеров. 8 ) Корректируем исходники для обеспечения поддержки UTF-8 - заменяем toLatin1 на toAscii (см. http://sourceforge.net/projects/pythonqt/forums/forum/631392/topic/3805500 (http://sourceforge.net/projects/pythonqt/forums/forum/631392/topic/3805500) ): PythonQtScriptingConsole.cpp (PythonQtScriptingConsole::executeCode, 183): Код: p.setNewRef(PyRun_String(code.toAscii().data(), Py_single_input, dict, dict)); PythonQt.cpp (PythonQt::evalScript, 727): Код: p.setNewRef(PyRun_String(script.toAscii().data(), start, dict, dict)); 9) Выполняем команду "Собрать все". После завершения в каталоге C:\PythonQt2.1\lib будут размещены файлы библиотек (.a и .dll) и исполняемых файлов примеров. Все. Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Декабрь 04, 2011, 20:12 Обновил предыдущее сообщение с описанием процесса сборки PythonQt с учетом нового релиза исходников библиотеки из репозитория http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/ (http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/).
Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: med_phisiker от Май 26, 2012, 08:07 Здравствуйте, я тоже пытаюсь собрать PythonQt под Windows(у меня Windows 7 sp1 32). Версия qt sdk 1.2 . Python 2.6.6 .PythonQt2.0.1
Я действовал по инструкции sergek'a. 1) Скачал qt sdk 1.2 , установил его в C:\QtSDK. Mingw в нем уже был, но я решил поставить, скачал последнюю версию и установил в C:\MinGW. 2) Установил Python 2.6.6 из дистрибутива http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi в каталог по умолчанию C:\Python26 3) утилиты pexports у меня не было, скачал ее отдельно поставил в C:\pexports. чтобы они опознавались в командной строке Qt , Madde Terminal добавил в системную переменую PATH адреса для pexports, mingw. после этого в командной строке Qt , Madde Terminal, смог выполнить указанные команды: C:\windows\system32>cd C:\Python26\libs python26.dll у меня был расположен по следующему адресу C:/Windows/System32/python26.dll поэтому вторая строка изменилась следующим образом. C:\Python26\libs> pexports C:/Windows/System32/python26.dll >python26.def C:\Python26\libs> dlltool --dllname python26.dll --def python26.def --output-lib libpython26.a 4) Результатом этих шагов я получил библиотеку импорта libpython26.a 5) Далее я скорректировал def-файлы в каталоге C:\PythonQt2.0.1\build указанным образом: python.prf - указываем в явном виде каталоги и файлы. Сюда же прописываем путь до исходников PythonQt (наверное, это не очень здорово, но зато работает под Windows7). Поскольку отладочной версии питона в дистрибутиве нет, то для отладки и релиза используем одну и ту же библиотеку импорта: Код: win32:INCLUDEPATH += c:/Python26/include C:/PythonQt2.0.1/src win32:LIBS += c:/Python26/libs/libpython26.a common.prf - раскомментируем строку (хотя это можно и не делать, наверное - собирать будем в креаторе): Код: CONFIG += debug_and_release build_all PythonQt.prf - корректируем имя библиотеки: Код: win32::LIBS += $$PWD/../lib/libPythonQt$${DEBUG_EXT}.a PythonQt_QtAll.prf - то же самое: Код: win32::LIBS += $$PWD/../lib/libPythonQt_QtAll$${DEBUG_EXT}.a указал конфигурацию проэкта для qt: Профиль Qt - Qt 4.7.4 for Desktop - MinGW 4.4 (Qt SDK); Каталог сборки - C:\PythonQt2.0.1; Запускаю собрать все. В процессе сборки появилось две ошибки: 1) C:\PythonQt2.0.1\src\PythonQtConversion.cpp:677: ошибка: invalid conversion from 'Py_UNICODE*' to 'const ushort*' 2) C:\PythonQt2.0.1\src\PythonQtConversion.cpp:1045: ошибка: invalid conversion from 'const ushort*' to 'const Py_UNICODE*' От второй ошибки можно избавиться следующим способом: в PythonQtConversion.cpp:1045 в PythonQtConv::QStringToPyObject() найти #ifdef WIN32 //return PyString_FromString(str.toLatin1().data()); return PyUnicode_FromUnicode(str.utf16(), str.length()); нужно сделать так #ifdef WIN32 return PyString_FromString(str.toLatin1().data()); // return PyUnicode_FromUnicode(str.utf16(), str.length()); это решает вторую ошибку и убирает куча ворнингов. Избавиться от первой мне так и не удалось помогите пожалуйста!!! :( Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Май 26, 2012, 11:43 Судя по всему, вы работаете с исходным дистрибутивом, который давно устарел. Для него нужно с делать явное преобразование типов:
в файле PythonQtConversion.cpp из состава проекта src делаем явное преобразование типов в строках 677 и 1043: r = QString::fromUtf16((const ushort*)PyUnicode_AS_UNICODE(val)); и return PyUnicode_FromUnicode((const Py_UNICODE*)str.utf16(), str.length()); Вам нужно скачать trunk с текущем релизом (221), там эта ошибка давно устранена: http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/trunk/ (http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/trunk/) и на этой странице "Download GNU tarball". Из каталога C:\PythonQt2.0.1 удаляете все содержимое и разархивируете туда полученный файл. Далее - по моим рекомендациям (правда, они - для 219 ревизии, но изменений не должно быть много). Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: med_phisiker от Май 29, 2012, 08:55 Спасибо за помощь =). Скачал новый trunk с текущем релизом (221), но при сборке вылезла новая ошибка:
ошибка: C:/PythonQt2.0.1/build/../lib/PythonQt_d.a: No such file or directory При выполнении qmake в pythonqt/lib как вы и писали появляются файлы библиотек: libPythonQt.a; libPythonQt.dll ; libPythonQt_d.dll ; libPythonQt_d.dll Но почему Qt ищет PythonQt_d.a ? Могу ли я как то указать на то что нужно использовать libPythonQt.a; libPythonQt.dll ; libPythonQt_d.dll ; libPythonQt_d.dll, если я правильно понял именно они нужны для "собрать все" Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Май 29, 2012, 09:28 Внимательнее посмотрите python.prf.
Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: med_phisiker от Май 29, 2012, 10:06 Не помогло, решил проблему следующим образом:
При сборке qt выдавал библиотеку: libPythonQt.a а потом жаловался что не может найти PythonQt.a . Я просто переименовывал libPythonQt.a -> PythonQt.a И так далее =) Благо файлов было немного. Ну в общем библиотеки и примеры собрались =) При этом мной была допущена ошибка, которую удалось обнаружить благодаря sergek: в папке build при редактировании файлов PythonQt.prf в строке win32::LIBS += $$PWD/../lib/PythonQt$${DEBUG_EXT}.lib просто заменил расширение с .lib на .a и у меня была такая строчка win32::LIBS += $$PWD/../lib/PythonQt$${DEBUG_EXT}.a вместо : win32::LIBS += $$PWD/../lib/libPythonQt$${DEBUG_EXT}.a поэтому qt и искал PythonQt.a и dll вместо libPythonQt.a и dll такая же ошибка была допущена мной при редактировании файла PythonQt_QtAll.prf в строке win32::LIBS += $$PWD/../lib/PythonQt_QtAll$${DEBUG_EXT}.lib я написал win32::LIBS += $$PWD/../lib/PythonQt_QtAll$${DEBUG_EXT}.a а нужно было win32::LIBS += $$PWD/../lib/libPythonQt_QtAll$${DEBUG_EXT}.a Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: SpulN от Декабрь 21, 2012, 20:10 Здравствуйте, необходимо собрать PythonQt, делал все как здесь описано, но процесс сборки останавливается с ошибкой:
Creating library file: ../lib/libPythonQt.a mingw32-make[2]: Leaving directory `c:/PythonQt2.1/src' mingw32-make[1]: Leaving directory `c:/PythonQt2.1/src' cd extensions/ && C:/mingw/bin/mingw32-make -f Makefile mingw32-make[1]: Entering directory `c:/PythonQt2.1/extensions' cd PythonQt_QtAll/ && c:/mingw/bin/mingw32-make -f Makefile mingw32-make[1]: Leaving directory `c:/PythonQt2.1/extensions' /usr/bin/sh: c:/mingw/bin/mingw32-make: Invalid argument mingw32-make[1]: *** [sub-PythonQt_QtAll-make_default] Error 126 mingw32-make: *** [sub-extensions-make_default-ordered] Error 2 20:45:33: Процесс «C:\mingw\bin\mingw32-make.exe» завершился с кодом 2. Ошибка при сборке/установке проекта PythonQt (инструментарий: Desktop) Во время выполнения этапа «Сборка» Не подскажете как решить данную проблему? Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: kambala от Декабрь 21, 2012, 20:38 ошибка пишется во вкладке «вывод компилятора»
Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Декабрь 21, 2012, 23:15 Конечно же, надо давать сообщения из консоли сборки, а атк очень мало информации. Судя по
Цитировать /usr/bin/sh: c:/mingw/bin/mingw32-make: Invalid argument это нестандартная установка Qt SDK (либо вообще не SDK).И есть подозрение, что не выполнен qmake. Совет - поставьте SDK и повторите. Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: SpulN от Декабрь 22, 2012, 20:37 Установочный файл называется qt-win-opensource-4.8.1-mingw.exe, по умолчанию установился в директорию C:\Qt\4.8.1, скачал с ftp://ftp.qt-project.org/qt/source/ (http://ftp://ftp.qt-project.org/qt/source/). Может это не sdk? Также пришлось отдельно устанавливать Qt creator. Да и подскажите где можно посмотреть вывод компилятора. Просто я сам с qt сталкнулся впервые, и мне надо лишь скомпилировать проект из исходных кодов.
Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: kambala от Декабрь 22, 2012, 21:35 ты скачал правильную вещь.
так трудно почитать названия вкладок (они внизу) в креаторе? или просто нажми Ctrl+4. если я не ошибаюсь, то PyQt надо собирать из командной строки, а не из креатора. Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Декабрь 22, 2012, 23:02 Qt SDK http://www.developer.nokia.com/info/sw.nokia.com/id/da8df288-e615-443d-be5c-00c8a72435f8/Qt_SDK.html (http://www.developer.nokia.com/info/sw.nokia.com/id/da8df288-e615-443d-be5c-00c8a72435f8/Qt_SDK.html). Чтобы скачать, нужно зарегистрироваться.
Можно использовать Creator из SDK, но потом лучше поставить 2.6.1 http://qt-project.org/downloads#qt-creator (http://qt-project.org/downloads#qt-creator). Хотя бы из-за одной кнопки - Ctrl-Alt-B. Консоль сборки - Alt+4 или меню Окно/Панели вывода/Консоль сборки. Цитировать если я не ошибаюсь, то PyQt надо собирать из командной строки, а не из креатора. Дело вкуса, только речь не о PyQt, а о PythonQt. Это, так сказать совсем наоборот ;)Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: kambala от Декабрь 22, 2012, 23:11 Цитировать если я не ошибаюсь, то PyQt надо собирать из командной строки, а не из креатора. Дело вкуса, только речь не о PyQt, а о PythonQt. Это, так сказать совсем наоборот ;)Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Декабрь 23, 2012, 15:59 Цитировать в инструкциях по сборке метод «с помощью ИДЕ» всё равно не предлагается Вообще-то, под виндами это сопряжено с определенными неудобствами. Скажем, на команду make у меня с удовольствием откликается еще один компилятор, а сделать, увы, ничего не может. Но, ради любви к искусству, вместо make набрал mingw32-make.exe. Все прошло без проблем.Кстати, уточню, что использовал не виндовый cmd, а "Qt 4.8.1 for Desktop (MinGW)" из Qt SDK. Надеюсь, не получу упрека в том, что мне влом настраивать окружение для cmd? ;) Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: kolob от Ноябрь 20, 2013, 09:40 Подскажите, а PythonQt можно только в SDK собрать?
SDK уже устарело. Разработка ведется на версии Qt поновее и без SDK. Как быть? Вот такая ошибка: Код: Creating library file: ..\lib\libPythonQt.a Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: kolob от Ноябрь 20, 2013, 16:43 Все дело оказалось в 64 битном Python. Поставил 32х и все собралось нормально. Только вот еще не проверял.
Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Ноябрь 20, 2013, 16:48 Подскажите, а PythonQt можно только в SDK собрать? Нет, конечно. Я собираю сейчас в Qt Creator 2.8.1, который идет вместе с Qt 5.1.1. Пробовал как-то и из командной строки.Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: Igors от Ноябрь 20, 2013, 18:40 Подскажите, а PythonQt можно только в SDK собрать? Я откомпилировал в Xcode - без проблем, как static так и dynamicНазвание: Re: [Решено] Сборка PythonQt под Windows Отправлено: antoshib от Ноябрь 26, 2014, 13:23 Пытаюсь собрать с python34 в соответствии с инструкцией на WinХР и компиллятор выдаёт такие ошибки:
Код: ... Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: Sahab от Ноябрь 26, 2014, 21:30 Кривой порт под третий питон, собирай со вторым.
Название: Re: [Решено] Сборка PythonQt под Windows Отправлено: sergek от Ноябрь 27, 2014, 10:25 http://sourceforge.net/p/pythonqt/code/HEAD/tree/trunk/ не пробовали?
|