Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

ImportError: DLL load failed while importing QtCore: The specified module could not be found.



  • I cannot get pyqt5 to run under anaconda python. I get the following error message when I run a script shown below the error message:

    Traceback (most recent call last
    File [full path to the python script], line 9, in <module>
    from PyQt5.QtCore import QT_VERSION_STR
    ImportError: DLL load failed while importing QtCore: The specified module could not be found.
    

    Here's the python script that produced the error message shown above:

    import sys
    print("Python version:  " + str(sys.version))
    print("Version info.:  " + str(sys.version_info))
    print("sys.hexversion:  " + str(sys.hexversion))
    
    from PyQt5.QtCore import QT_VERSION_STR
    from PyQt5.pyqtconfig import Configuration
    
    print("Qt version:", QT_VERSION_STR)
    cfg = Configuration()
    print("SIP version:", cfg.sip_version_str)
    print("PyQt version:", cfg.pyqt_version_str)
    

    I made the following attempts to fix the problem:

    1. I verified that my "C:\ProgramData\Anaconda3" does include a python3.dll file

    2. A comment on Quora.com, to help someone else with a dll-loading problem, suggested, "Just add the Python base DLL location to your path variable and restart the interpreter shell or IDLE." So, I added the following paths, one after the other, to my Win 10 environment user variable "Path" (and, as you can see, I went hog wild, adding directories) to no avail:

      C:\ProgramData\Anaconda3
      C:\ProgramData\Anaconda3\Library\plugins
      C:\ProgramData\Anaconda3\Lib\site-packages
      C:\ProgramData\Anaconda3\sip\PyQt5\QtCore
      C:\ProgramData\Anaconda3\Library\include\qt\QtCore
      C:\ProgramData\Anaconda3\Library\include\qt\QtCore\5.9.7\QtCore\private
      C:\ProgramData\Anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\include\qt\QtCore
      C:\ProgramData\Anaconda3\pkgs\pyqt-5.9.2-py38ha925a31_4\sip\PyQt5\QtCore
      C:\ProgramData\Anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\include\qt\QtCore\5.9.7\QtCore
      C:\ProgramData\Anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\include\qt\QtCore\5.9.7\QtCore\private
      C:\ProgramData\Anaconda3\pkgs
      C:\ProgramData\Anaconda3\Library\plugins\PyQt5
      C:\ProgramData\Anaconda3\Library\plugins\designer
      C:\ProgramData\Anaconda3\pkgs\pyqt-5.9.2-py38ha925a31_4\Library\plugins\designer
      C:\Users\marc\AppData\Local\Programs\ExifTool
      C:\ProgramData\Anaconda3\pkgs\pyqt-5.9.2-py38ha925a31_4\Lib\site-packages
      C:\ProgramData\Anaconda3\pkgs\pyqt-5.9.2-py38ha925a31_4\Library\plugins\PyQt5
      C:\ProgramData\Anaconda3\pkgs\pyqt-5.9.2-py38ha925a31_4\Lib\site-packages\PyQt5
      C:\ProgramData\Anaconda3\pkgs\pyqt-5.9.2-py38ha925a31_4\sip\PyQt5
      C:\ProgramData\Anaconda3\sip\PyQt5
      

    I installed Anaconda Python and PyQT5 as follows:

    • I installed everything as administrator.
    • To install Anaconda: I ran Anaconda3-2020.07-Windows-x86 64.exe, downloaded 2020-08-30 07:21 PM
    • To install PyQt5: I ran: conda install -c anaconda pyqt, as recommended by https://anaconda.org/anaconda/pyqt
    • To verify that PyQt5 has been installed, I ran "conda list", and it reports that I have installed: "qt 5.9.7 vc14h73c81de_0 [vc14] anaconda"

    But I still cannot run pyqt, because of the error shown at the top of this posting:

    ImportError: DLL load failed while importing QtCore: The specified module could not be found.
    

    Any suggestions would be much appreciated.

    Thanks you for reading this.

                                Marc

  • Moderators

    Hi, and welcome!

    @Marceepoo said in ImportError: DLL load failed while importing QtCore: The specified module could not be found.:

    To install PyQt5: I ran: conda install -c anaconda pyqt, as recommended by https://anaconda.org/anaconda/pyqt

    PyQt5 is already bundled with Anaconda by default, so you shouldn't need to install it again. I suggest that you:

    1. Undo all the modifications you did to your PATH
    2. Reboot your PC for good luck
    3. Launch Spyder (a Python IDE that comes bundled with Anaconda) and use it to run a "Hello World" script:
    from PyQt5.QtWidgets import QApplication, QLabel
    
    app = QApplication([])
    label = QLabel("Hello World!")
    label.show()
    
    app.exec_()
    

    If you can't even launch Spyder or run PyQt5 code from Spyder, then uninstall + reinstall Anaconda and try again.

    A comment on Quora.com, to help someone else with a dll-loading problem, suggested, "Just add the Python base DLL location to your path variable and restart the interpreter shell or IDLE." So, I added the following paths, one after the other, to my Win 10 environment user variable "Path" (and, as you can see, I went hog wild, adding directories) to no avail:

    Adding Qt DLLs to your PATH is strongly discouraged. You can break other programs on your PC that use other versions of Qt (for example, the Microsoft OneDrive client)



  • @JKSH said in ImportError: DLL load failed while importing QtCore: The specified module could not be found.:

    from PyQt5.QtWidgets import QApplication, QLabel

    app = QApplication([])
    label = QLabel("Hello World!")
    label.show()

    app.exec_()

    Dear @JKSH
    Thank you so much helping. I tried running Spyder, but it would not run. So I uninstalled Anaconda, downloaded the current version from Anaconda (Anaconda3-2020.07-Windows-x86_64.exe). I closed every running program that I could close, and then reinstalled Anaconda (using the .exe file identified above), while logged into Win10 64 bit Windows as the Win10 administrator.
    Then, I opened the Anaconda prompt as administrator (even though I was logged into Windows as administrator), and ran the command:

    conda install -c anaconda pyqt
    

    On the one hand, Spyder succeeded in running the "Hello World" script you suggested I run.
    But on the other hand, here's what transpired in the Command Prompt window:

    C:\Users\marc>"C:\ProgramData\Anaconda3\python.exe" "E:\Apps\UtilitiesByMarc\Getting the version numbers of Qt, SIP and PyQt.py"
    Python version:  3.8.3 (default, Jul  2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)]
    Version info.:  sys.version_info(major=3, minor=8, micro=3, releaselevel='final', serial=0)
    sys.hexversion:  50856944
    Traceback (most recent call last):
      File "E:\Apps\UtilitiesByMarc\Getting the version numbers of Qt, SIP and PyQt.py", line 9, in <module>
        from PyQt5.QtCore import QT_VERSION_STR
    ImportError: DLL load failed while importing QtCore: The specified module could not be found.
    C:\Users\marc>
    

    I would appreciate any suggestions you might have. I had this problem posted for 14 days ago on StackOverflow, and only got one suggestion which did not help. I don't know where else to turn.


  • Moderators

    Hi @Marceepoo, you're most welcome.

    @Marceepoo said in ImportError: DLL load failed while importing QtCore: The specified module could not be found.:

    On the one hand, Spyder succeeded in running the "Hello World" script you suggested I run.

    Great! That means PyQt5 is installed and working.

    But on the other hand, here's what transpired in the Command Prompt window:

    The regular Windows Command Prompt does not have Anaconda's Python environment set up. You should:

    • Run python.exe from your Anaconda Prompt, OR
    • Open your script using Spyder and run it there.


  • @JKSH Again, I can't thank you enough.
    Proving the truth of the old adage, "No good deed goes unpunished", I have a follow up question.
    Hereunto, when I have run a python script, I usually ran it either:

    • As a "Tool" in EditPad Pro, which I think ran my scripts under the Windows Cmd.exe, as follows:
    "C:\ProgramData\Anaconda3\python.exe" "%Python_FILE%" 
    

    or

    • In a .cmd file, or as a command line being run by vbscript, or by python's subprocess.

    [Confession: I don't know whether those uses of Cmd.exe called the Cmd.exe in: (i) C:\Windows\System32, or (ii) C:\Windows\SysWOW64]

    So I went hunting for Anaconda's version of Cmd.exe, thinking maybe the command line syntax would be:

    [Full Path to Anaconda's Cmd.exe] "C:\ProgramData\Anaconda3\python.exe" "%Python_FILE%" 
    

    I checked the Windows properties for the Anaconda Prompt's shortcut to get the shortcut's "Target", i.e., the Full Path to (what I presumed would be) Anaconda's analog to "cmd.exe".
    But the shortcut's Target was a little more complicated, to wit:

    %windir%\System32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
    

    I am out of my league here. I have no idea how to use that.

    What would be the proper command line on a Windows to run, in the Anaconda Prompt, a python script located at "e:\apps\PyQt5script.py"?

    Thanks again,
    Marc



  • @Marceepoo said in ImportError: DLL load failed while importing QtCore: The specified module could not be found.:

    %windir%\System32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3

    This simply starts a cmd.exe, which first runs C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3 to set up the anaconda environment, and the cmd (Command Prompt) remains (does not exit). You then sit and execute things.

    Anaconda does not have "its own" command shell, it's just the regular Windows one. With some variables set up as per C:\ProgramData\Anaconda3\Scripts\activate.bat.



  • Do you know if there a way for me to send a command line (e.g.: ' "python.exe" "hello_world.py" ') to the Anaconda environment after I run the activate.bat?

    I tried running:

    %windir%\System32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3 E:\Apps\UtilitiesByMarc\PyQt5_Hello_World.py
    

    But I got the error message,

    activate does not accept more than one argument:
    ['C:\\ProgramData\\Anaconda3', 'E:\\Apps\\UtilitiesByMarc\\PyQt5_Hello_World.py']
    

    So, looking for another alternative, I opened an Anaconda prompt and then found it in Taskmgr's processes window, and then opened the Details link for that process, and got a PID of 15124.
    One idea I had is:

    • I would run a Vbscript that would call/trigger the Anaconda prompt shortcut and get the PID of the instance of cmd.exe that the shortcut created; and then, ...

    • I would use the PID to somehow send to that instance of cmd.exe, the following command line:

    ' "C:\ProgramData\Anaconda3\python.exe" "e:\hello_world.py" '
    

    Of course, I haven't yet figured out how to do that.

    I would appreciate any suggestions about where to get help that would enable me to use PyQt for the python scripts I use for copying files, performing searches for files or in files, etc.

    Thank you again.
    Marc


  • Moderators

    Just call Anaconda's activate.bat script before calling your own script:

    > C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
    
    > python.exe E:\Apps\UtilitiesByMarc\PyQt5_Hello_World.py
    

    (Note: After activating, python.exe will be placed in your PATH so you don't need to specify the full path anymore)



  • @Marceepoo
    I am a little lost as to what you are actually trying to achieve.

    Are you trying to run this python stuff outside of Qt? Are the python scripts your actual Qt application? Are you trying to run these python scripts as sub-processes from your Qt application via QProcess? Or what?

    If you are sitting in your own Command Prompt you can just execute two statements like @JKSH shows. The first sets the environment used by the second. You can also then continue to execute further python scripts in that shell by only doing the second line (python.exe ...) as the environment has been set from the first line.

    Earlier on you were using cmd.exe /K, which creates a new Command Prompt and Keeps it in existence. (Where cmd.exe /C would run a command and then exit the Command Prompt.) I'm not sure how that relates to your situation/what you want to happen.

    To do normal conda development work, one normally opens a Command Prompt and type in the first command, to set that shell's environment. You could set up a shortcut like cmd /k C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3 to achieve that. Then you keep that and keep typing in the various python.exe ... lines to run things. If you want the first thing it does to be the "Hello World" then do the "Hello", and then stay, you can do that in one line/from a shortcut via:

    cmd /k "C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3 & python.exe E:\Apps\UtilitiesByMarc\PyQt5_Hello_World.py"
    


  • @JonB said in ImportError: DLL load failed while importing QtCore: The specified module could not be found.:

    cmd /k "C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3 & python.exe E:\Apps\UtilitiesByMarc\PyQt5_Hello_World.py"

    That was the exactly the solution I was looking for. Thank you sooo much. Often for me, the hardest part is explaining what I am trying to do without providing too long a description. Thank you for seeing what I needed, and showing me how to do it. Much appreciated.


Log in to reply