Могут ли PyQt4 и Qt4 / C ++ мирно сосуществовать в Windows? - PullRequest
0 голосов
/ 09 декабря 2010

Я ранее установил PyQt4 на мой компьютер с Windows XP и успешно запустил все. Этим вечером я скачал полный Qt4 SDK (версия с открытым исходным кодом) и также установил его. После добавления пути к каталогу bin в путь к моей системной среде я смог создать несколько небольших программ, написанных на C ++. Не меняя среду, я запустил python и попытался импортировать PyQt4.QtCore и получил ошибку, что не удалось загрузить DLL. Я удалил из своего окружения путь к каталогу bin QT4 SDK и теперь смог запускать мои программы на Python PyQt4, но я больше не мог собирать свои программы на C ++.

Прежде всего, я не уверен, почему наличие C ++ SDK должно влиять на версию Python, потому что они находятся в разных каталогах. Я предполагаю, что проблема заключается в том, что когда python пытается загрузить DLL PyQt4, он думает, что использует исполняемый файл из пути python, но, поскольку путь SDK является первым, именно эта (несовместимая) версия является тем, что фактически вызывается.

Есть ли способ, чтобы эти две среды могли мирно сочетаться друг с другом, чтобы я мог создавать и запускать программы любого типа?

1 Ответ

0 голосов
/ 09 декабря 2010

Проблема, как вы правильно предполагаете, состоит в том, что версии различных DLL (QtCore4.dll, QtGui4.dll и т. Д.) Отличаются.Я обычно обнаруживаю, что проблема возникает для того, кто ожидает более новую версию (поэтому, если Qt SDK установлен вторым, но PyQt4 находится в начале пути, Qt SDK будет жаловаться), но похоже, что вы получилидругая проблема.

Есть два решения, которые я нашел для этого:

  • Измените свой путь для различных сред сборки / запуска (не очень приятно).

  • Убедитесь, что PyQt4 и Qt / C ++ имеют одинаковую версию Qt, чтобы любая DLL работала (как правило, намного проще).

Поскольку я начал устанавливать PyQt4 и Qt / C ++ на компьютер при первом его использовании (и, следовательно, они имеют эквивалентные версии), у меня редко возникали проблемы с их сосуществованием.

...