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