Missing dll files when using pyinstaller

49,474

Solution 1

This may be more like a workaround and Pyinstaller might need fixing.

I found out that --paths argument pointing to the directory containing Qt5Core.dll, Qt5Gui.dll, etc. helped

pyinstaller --paths C:\Python35\Lib\site-packages\PyQt5\Qt\bin hello.py

Solution 2

I read all complicated solutions on github and stackoverflow for this problem. However, the below simple solution is what worked for me:

Step 1: pip3 uninstall pyinstaller

Step 2: pip install pyinstaller

Step 3: pyinstaller --onefile filename.py

I tried this solution on 2 different computers which were facing the same problem. Both worked. Please let me know if this works for you as well. Thumbs up would be appreciated after that. Cheers

Solution 3

This has now been fixed in the latest development branch of PyInstaller, see this Issue for PyInstaller on GitHub.

Share:
49,474
shultz
Author by

shultz

Updated on July 19, 2022

Comments

  • shultz
    shultz almost 2 years

    Good day!

    I'm using python 3.5.2 with qt5, pyqt5 and sip14.8. I'm also using the latest pyinstaller bracnch (3.3.dev0+g501ad40).

    I'm trying to create an exe file for a basic hello world program.

    from PyQt5 import QtWidgets
    import sys
    
    class newPingDialog(QtWidgets.QMainWindow):
    
    def __init__(self):
        super(newPingDialog, self).__init__()
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle("hello!")
        self.show()
    
    
    app = QtWidgets.QApplication(sys.argv)
    GUI = newPingDialog()
    sys.exit(app.exec_())
    

    At first, I used to get some errors regarding crt-msi. So I've reinstalled SDK and c++ runtime and added them to my environment. But now I keep getting errors about missing dlls (qsvg, Qt5PrintSupport)

    6296 WARNING: lib not found: Qt5Svg.dll dependency of C:\users\me\appdata\local\programs\python\python35\lib\site-pac
    kages\PyQt5\Qt\plugins\imageformats\qsvg.dll
    6584 WARNING: lib not found: Qt5Svg.dll dependency of C:\users\me\appdata\local\programs\python\python35\lib\site-pac
    kages\PyQt5\Qt\plugins\iconengines\qsvgicon.dll
    6992 WARNING: lib not found: Qt5PrintSupport.dll dependency of C:\users\me\appdata\local\programs\python\python35\lib
    \site-packages\PyQt5\Qt\plugins\printsupport\windowsprintersupport.dll
    7535 WARNING: lib not found: Qt5PrintSupport.dll dependency of c:\users\me\appdata\local\programs\python\python35\lib
    \site-packages\PyQt5\QtPrintSupport.pyd
    8245 INFO: Looking for eggs
    8245 INFO: Using Python library c:\users\me\appdata\local\programs\python\python35\python35.dll
    8246 INFO: Found binding redirects:
    

    I've checked and both dlls exist and have their PATH set. I also tried to manually add them to my dist folder, but it didn't helped.

    I'll highly appreciate any advice you might have!

  • shultz
    shultz almost 8 years
    It worked! I've spent 3 days on it, and your solution worked! thank you!
  • MrLeeh
    MrLeeh over 7 years
    The same for me. Thanks very much for this tipp. I was close to giving up on it. With --paths it works.
  • MrLeeh
    MrLeeh over 7 years
    If you use a virtual environment you can also set the --paths to venv\Lib\site-packages\PyQt5\Qt\bin.
  • Overdrivr
    Overdrivr over 5 years
    Inside the spec file, there is also the HOMEPATH variable that can automatically expand to python installation directory. Here, it's C:\Python35\Lib\site-package\ . It's more portable than hardcoded paths., and here it equals to HOMEPATH + \\PyQt5\Qt\bin
  • miThom
    miThom about 5 years
    doesn't work for most modules using dll's i had to manually --add-data the dll's themselves from out of the virtualenv
  • Rob Fisher
    Rob Fisher over 2 years
    Worked for me; I suspect because I had some sort of Python version mismatch (it was complaining about lack of python38.dll when I was using Python 3.9).