Ответ 1
Я хочу написать приложение C++ с использованием Qt, но сначала создайте прототип, используя Python, а затем постепенно заменяйте код Python на C++. Это правильный подход?
Это зависит от ваших целей. Сделав оба, я бы порекомендовал вам остаться с Python, где это возможно и разумно. Хотя это требует немного дисциплины, на Python очень возможно писать чрезвычайно большие приложения. Но, поскольку вы найдете горячие точки и вещи, которые можно лучше обработать в C++, вы, несомненно, сможете портировать соответствующие детали на C++.
Есть ли исчерпывающая документация по этому процессу или мне нужно изучить каждый компонент, и если да, то какие?
Вот что я бы порекомендовал для различных частей:
РЕДАКТОР /IDE: Используйте любой редактор /IDE, с которым вам удобно, но я настоятельно рекомендую тот, который поддерживает рефакторинг. Если вам удобно с Eclipse, используйте его. Если вы хотите в основном идти по маршруту C++ и не слишком знакомы с какими-либо редакторами, вам лучше использовать QtCreator. Эрик - чрезвычайно хорошая Python IDE с поддержкой рефакторинга, если вы не собираетесь делать много C++, взгляните на это. Более того, его исходный код является примером хорошего использования и практики PyQt.
ПРОЦЕСС:
Краткое резюме:
- Напишите ваше приложение на Python, используя PyQt
- Когда идентифицированы как горячие точки, конвертируйте разделенные классы Python в C++
- Создайте привязки для этих классов, используя SIP
- Импортируйте вновь определенные библиотеки в Python вместо их аналогов Python
- Наслаждайтесь ускорением
Общие детали:
Напишите приложение на Python, используя PyQt. Соблюдайте осторожность при разделении задач, чтобы при переносе частей на C++ они были отделены от своих зависимостей. Когда вам, наконец, нужно что-то перенести на C++, запишите это в C++/Qt, а затем создайте привязки для него, используя SIP. SIP имеет хорошее справочное руководство по процессу, и у вас есть весь PyQt в качестве примера.
РАЗВЕРТЫВАНИЕ:
C++ - Для многих приложений зависимости достаточно просты, поэтому создать установщик с помощью такого инструмента, как NullSoft Installer или InnoSetup, не составит труда.
Python/PyQt - Приложения PyQt немного сложнее установить из-за зависимости от Python и его зависимости от наличия библиотек Qt. Один человек задокументировал свои усилия на этом посту в ARSTechnica. py2exe работает довольно хорошо в Windows и должен работать нормально. IME, freeze.py, поставляемый с исходным кодом Python, иногда имеет проблемы с определением, какие разделяемые библиотеки действительно необходимы, и иногда заканчивается созданием двоичного файла, чьи зависимости отсутствуют. Py2app может работать на Mac OS X
Но хуже всего то, что лицензирование PyQt/Qt. Если вы разрабатываете коммерческое приложение, вам необходимо иметь коммерческую лицензию PyQt (и Qt) и убедиться, что пользователи не могут легко изменять исходный код или иным образом писать код для API PyQt/Qt из-за лицензионных ограничений. По этой причине автор PyQt создал инструмент под названием VendorId (хотя он имеет лицензию Python). В VendorId есть инструмент под названием SIB, который можно использовать для создания исполняемого файла, который зависит только от интерпретатора Python. Но, если вы собираетесь зайти так далеко, вы можете установить собственный Python вместе с вашим приложением.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я вообще не использовал PySide, поэтому я не уверен, как он сравнивается с PyQt. Также обратите внимание на следующее предупреждение на их сайте:
PySide находится в стадии разработки и пока не подходит для разработки приложений, требующих стабильности на уровне производства.
Но, к счастью, они намерены, по крайней мере для первоначального выпуска, "поддерживать совместимость API с PyQt". Таким образом, помимо привязок C++, вы можете легко переключаться между ними позже.