PyQt5 install by archive extraction
We assume you’re trying to build a python qt app on a dev box or a build machine
(for a CI setup). You need to install
PyQt5 for various reasons including
running tests or freezing the setup build.
There are two problem this post will help you solve:
- Slow downloads of PyQt5
- Installation of PyQt5 on the box
My experience with sourceforge.net’s download service has not been very good.
They are slow and redirect from one mirror to another which confuses
MirrorService is a great alternative to sf.net downloads. Here’s
the link to PyQt5 5.5:
https://www.mirrorservice.org/sites/downloads.sourceforge.net/p/py/pyqt/PyQt5/PyQt-5.5/PyQt5-5.5-gpl-Py3.4-Qt5.5.0-x32.exe -FileName $env:temp/pyqt5_install.exe
Onto the second part. PyQt5 installer is based on the NSIS installation scripts. For some reason, the installer didn’t run for me in CI machine. Here’s the alternate way to install PyQt5 (in powershell):
> cinst 7zip.commandline > c:\programdata\chocolatey\bin\7z.exe x $env:temp\pyqt5_install.exe -oC:\\Python34 -r > ls -name "C:\\Python34\\Lib\\site-packages" > ls -name "C:\\Python34\\Lib\\site-packages\\PyQt5" > Set-Content -Path "C:\\Python34\\Lib\\site-packages\\PyQt5\\pyuic5.bat" -Value "C:\\Python34\\python.exe -m PyQt5.uic.pyuic %1 %2 %3 %4 %5 %6 %7 %8 %9" > Get-Content "C:\\Python34\\Lib\\site-packages\\PyQt5\\pyuic5.bat"
We use 7zip version 9.30 or up, which can extract NSIS packages. Older versions
will extract the files into a different folder structure like
and require to move the files again :( We need to extract the files to
C:\\Python34 directory preserving the folder structure, so the PyQt5 module
ends up in
Last trick is to create a
pyuic5.bat file since we’re hacking the installation
process (it’d autogenerate for regular installation scenarios).
Complete example is available in the
appveyor.yml we’re using for pomito: https://github.com/codito/pomito/blob/master/appveyor.yml.