【问题标题】:AttributeError: Module 'PyQt5' has no attribute '__version__'AttributeError:模块“PyQt5”没有属性“__version__”
【发布时间】:2021-08-25 07:22:23
【问题描述】:

我试图将 python 文件转换为 .exe 文件。但是有了这两行,我就遇到了这个问题。

import cv2
exit()
Traceback (most recent call last):
  File "d:\anaconda3\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "d:\anaconda3\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:\Anaconda3\Scripts\pyinstaller.exe\__main__.py", line 7, in <module>
  File "d:\anaconda3\lib\site-packages\PyInstaller\__main__.py", line 114, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "d:\anaconda3\lib\site-packages\PyInstaller\__main__.py", line 65, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "d:\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 758, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "d:\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 705, in build
    exec(code, spec_namespace)
  File "D:\solar_cell\main.spec", line 7, in <module>
    a = Analysis(['main.py'],
  File "d:\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 254, in __init__
    self.__postinit__()
  File "d:\anaconda3\lib\site-packages\PyInstaller\building\datastruct.py", line 159, in __postinit__
    self.assemble()
  File "d:\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 433, in assemble
    self.graph.process_post_graph_hooks(self)
  File "d:\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 373, in process_post_graph_hooks
    module_hook.post_graph(analysis)
  File "d:\anaconda3\lib\site-packages\PyInstaller\depend\imphook.py", line 451, in post_graph
    self._load_hook_module()
  File "d:\anaconda3\lib\site-packages\PyInstaller\depend\imphook.py", line 408, in _load_hook_module
    self._hook_module = importlib_load_source(
  File "d:\anaconda3\lib\site-packages\PyInstaller\compat.py", line 637, in importlib_load_source
    return mod_loader.load_module()
  File "<frozen importlib._bootstrap_external>", line 522, in _check_name_wrapper
  File "<frozen importlib._bootstrap_external>", line 1027, in load_module
  File "<frozen importlib._bootstrap_external>", line 852, in load_module
  File "<frozen importlib._bootstrap>", line 265, in _load_module_shim
  File "<frozen importlib._bootstrap>", line 702, in _load
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 848, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "d:\anaconda3\lib\site-packages\PyInstaller\hooks\hook-PyQt5.py", line 14, in <module>
    from PyInstaller.utils.hooks.qt import pyqt5_library_info, get_qt_binaries
  File "d:\anaconda3\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 122, in <module>
    pyqt5_library_info = Qt5LibraryInfo('PyQt5')
  File "d:\anaconda3\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 50, in __init__
    if hooks.is_module_satisfies("PyQt5 >= 5.15.4"):
  File "d:\anaconda3\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 533, in is_module_satisfies
    version = get_module_attribute(module_name, version_attr)
  File "d:\anaconda3\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 329, in get_module_attribute
    raise AttributeError(
AttributeError: Module 'PyQt5' has no attribute '__version__'

如果我只是打印类似:print('dsfdsfs') 的内容,那么它可以成功包装到 .exe。

我的环境:
win10
pyinstaller 5.0.dev0
opencv-python 4.5.2.54
pyqt 5.9.2

我正在使用 anaconda 提示符来执行此操作。

【问题讨论】:

  • 我也收到了类似的错误,

标签: python-3.x pyqt5 pyinstaller


【解决方案1】:

尝试使用“pip install PyQt5”然后再次运行

【讨论】:

  • 没用,我用的是python 3.6.7,pip install PyQt5
  • 在我的情况下工作
【解决方案2】:

我想出了一个解决办法。当您使用 auto-py-to-exe 将 .py 文件转换为 .exe 时,您必须单击“高级”,然后在其中添加“隐藏导入”,然后将导入的内容添加到 .py 文件中,例如 my . py 文件导入“sounddevice”“numpy”和“os”,所以我将所有这些添加到 auto-py-to-exe 中的“隐藏导入”中我希望这会有所帮助 - 这是一张图片:example

【讨论】:

    【解决方案3】:

    我正在使用 pyinstaller 和 anaconda 提示,发现同样的问题,你必须解决它

    pip install PyQt5 --user --use-feature=2020-resolver

    然后再次运行 pyinstaller。

    【讨论】:

    • 它显示消息,没有这样的选项:--use-feature
    • @AbhilashSinghChauhan 这是 pip 的问题,尝试升级到最新版本的 pip 并重试python -m pip install --upgrade pip
    【解决方案4】:

    我通过手动将__version__ = "5.15.4" 添加到venv/Lib/site-packages/PyQt5/__init__.py 解决了这个问题,其中venv 是安装了PyQt5 的虚拟环境。

    之前:

    ...
    # 
    # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
    # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
    
    
    # Support PyQt5 sub-packages that have been created by setuptools.
    __path__ = __import__('pkgutil').extend_path(__path__, __name__)
    
    def find_qt():
    ...
    

    之后:

    ...
    # 
    # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
    # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
    
    
    # Support PyQt5 sub-packages that have been created by setuptools.
    __path__ = __import__('pkgutil').extend_path(__path__, __name__)
    __version__ = "5.15.4"
    
    def find_qt():
    ...
    

    【讨论】:

    • 我可以确认这对我有用,但我不确定它是否是最佳解决方案。这是一种快速奏效的技巧!
    【解决方案5】:

    在这件事上浪费了太多时间后,我更新了 PyInstaller,瞧,它工作了。

    【讨论】:

    • 什么版本的 PyInstaller ?
    【解决方案6】:

    不幸的是,Anaconda 上的 PyQt5 模块似乎被破坏并丢失了其他模块可能需要的各种文件,在我的例子中是 PySimpleGui。最简单的解决方案是创建一个全新的环境,幸运的是这在 anaconda 中相当容易,并且 pip install pyqt5。这应该可以解决任何问题。还要安装其余的软件包,你应该一切顺利!

    【讨论】:

      【解决方案7】:

      我遇到了同样的问题。 pip install PyQt5 出错... Pyinstaller 团队需要一些认真的帮助。恢复到可在我的系统上运行的以前版本的 Pyinstaller。

      Traceback (most recent call last):
        File "c:\progra~1\anacon~1\lib\runpy.py", line 193, in _run_module_as_main
          "__main__", mod_spec)
        File "c:\progra~1\anacon~1\lib\runpy.py", line 85, in _run_code
          exec(code, run_globals)
        File "C:\PROGRA~1\Anaconda3\Scripts\pyinstaller.exe\__main__.py", line 9, in <module>
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\__main__.py", line 126, in run
          run_build(pyi_config, spec_file, **vars(args))
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\__main__.py", line 65, in run_build
          PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\building\build_main.py", line 815, in main
          build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\building\build_main.py", line 762, in build
          exec(code, spec_namespace)
        File ".\tibcoAtlassian.spec", line 17, in <module>
          noarchive=False)
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\building\build_main.py", line 294, in __init__
          self.__postinit__()
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\building\datastruct.py", line 159, in __postinit__
          self.assemble()
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\building\build_main.py", line 473, in assemble
          self.graph.process_post_graph_hooks(self)
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\depend\analysis.py", line 373, in process_post_graph_hooks
          module_hook.post_graph(analysis)
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\depend\imphook.py", line 451, in post_graph
          self._load_hook_module()
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\depend\imphook.py", line 409, in _load_hook_module
          self.hook_module_name, self.hook_filename)
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\compat.py", line 632, in importlib_load_source
          return mod_loader.load_module()
        File "<frozen importlib._bootstrap_external>", line 407, in _check_name_wrapper
        File "<frozen importlib._bootstrap_external>", line 907, in load_module
        File "<frozen importlib._bootstrap_external>", line 732, in load_module
        File "<frozen importlib._bootstrap>", line 265, in _load_module_shim
        File "<frozen importlib._bootstrap>", line 696, in _load
        File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
        File "<frozen importlib._bootstrap_external>", line 728, in exec_module
        File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\hooks\hook-PyQt5.py", line 11, in <module>
          from PyInstaller.utils.hooks.qt import pyqt5_library_info, \
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 162, in <module>
          pyqt5_library_info = QtLibraryInfo('PyQt5')
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 54, in __init__
          if hooks.is_module_satisfies("PyQt5 >= 5.15.4"):
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 502, in is_module_satisfies
          version = get_module_attribute(module_name, version_attr)
        File "c:\progra~1\anacon~1\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 353, in get_module_attribute
          'Module %r has no attribute %r' % (module_name, attr_name))
      AttributeError: Module 'PyQt5' has no attribute '__version__'
      

      【讨论】:

      • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
      猜你喜欢
      • 2018-10-22
      • 2021-03-09
      • 2021-10-02
      • 2021-02-24
      • 2021-11-24
      • 2018-09-18
      • 2021-05-13
      • 2016-11-26
      • 1970-01-01
      相关资源
      最近更新 更多