Я хочу написать приложение на C ++ с использованием Qt, но сначала создайте прототип с использованием Python, а затем постепенно заменяйте код Python на C ++. Это правильный подход?
Это зависит от ваших целей. Сделав оба, я бы порекомендовал вам остаться с Python, где это возможно и разумно. Хотя это требует немного дисциплины, на Python очень возможно писать очень большие приложения. Но, поскольку вы находите горячие точки и вещи, которые можно лучше обрабатывать в C ++, вы, безусловно, можете портировать соответствующие части в C ++.
Есть ли исчерпывающая документация по этому процессу или мне нужно изучить каждый компонент, и если да, то какие?
Вот что я бы порекомендовал для различных частей:
РЕДАКТОР / IDE : Используйте любой редактор / IDE, который вам удобен, но я настоятельно рекомендую тот, который поддерживает рефакторинг. Если вам удобно с Eclipse, используйте его. Если вы хотите, в основном, идти по пути C ++ и не слишком знакомы с какими-либо редакторами, вам лучше использовать QtCreator. Eric - это чрезвычайно хорошая Python IDE с поддержкой рефакторинга, если вы не собираетесь много работать с C ++, посмотрите на это. Более того, его исходный код является примером хорошего использования и практики PyQt.
ПРОЦЕСС
Краткое резюме:
- Напишите ваше приложение на Python, используя PyQt
- Если идентифицированы как горячие точки, преобразуйте разделенные классы Python в C ++
- Создать привязки для этих классов, используя SIP
- Импорт вновь определенных библиотек в Python вместо их аналогов из Python
- Наслаждайтесь ускорением
Общие сведения:
Напишите приложение на Python, используя PyQt. Будьте осторожны, соблюдайте хорошее разделение проблем , чтобы при переносе частей на C ++ они были отделены от своих зависимостей. Когда вам, наконец, нужно что-то перенести на C ++, запишите это на C ++ / Qt, а затем создайте для него привязки, используя SIP . У SIP есть хорошее справочное руководство по этому процессу, и у вас есть весь PyQt в качестве примера.
DEPLOYMENT
C ++ - Для многих приложений зависимости достаточно просты, поэтому создать установщик с помощью такого инструмента, как NullSoft's 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 ++, вы можете легко переключаться между ними позже.