簡體   English   中英

Python 上 Windows:無法使用 pynput 運行凍結的應用程序 - 不支持平台

[英]Python on Windows: Cannot run freezed app using pynput - platform is not supported

在使用 cx_Freeze 6.10 的 Windows 11 的 64 位版本上,我試圖將 Python 應用程序凍結到 EXE 文件中,該應用程序在使用python AccessibleWindowSwitcher.py運行時沒有問題。 但是,當我嘗試運行 cx_Freeze 生成的 AccessibleWindowSwitcher.exe 文件時,出現以下錯誤:

Traceback (most recent call last):
  File "C:\Users\asamec\AppData\Local\Programs\Python\Python310-32\Lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 113, in run
    module_init.run(name + "__main__")
  File "C:\Users\asamec\AppData\Local\Programs\Python\Python310-32\Lib\site-packages\cx_Freeze\initscripts\Console.py", line 15, in run
    exec(code, module_main.__dict__)
  File "AccessibleWindowSwitcher.py", line 6, in <module>
  File "C:\Users\asamec\AppData\Local\Programs\Python\Python310-32\lib\site-packages\pynput\__init__.py", line 40, in <module>
    from . import keyboard
  File "C:\Users\asamec\AppData\Local\Programs\Python\Python310-32\lib\site-packages\pynput\keyboard\__init__.py", line 31, in <module>
    backend = backend(__name__)
  File "C:\Users\asamec\AppData\Local\Programs\Python\Python310-32\lib\site-packages\pynput\_util\__init__.py", line 76, in backend
    raise ImportError('this platform is not supported: {}'.format(
ImportError

我用於通過python AccessibleWindowSwitcher.py運行的 python 版本和凍結是 Python 3.10.5 32 位。

問題顯然出在 pynput 庫中,但我不知道只有在運行 EXE 文件時才會導致錯誤。

所以我找到了一個臨時解決這個問題的方法。 問題確實出在 pynput 庫中,由於某種原因,它無法導入一些平台相關的模塊。 該修復需要修改已安裝的 pynput 庫,因此將來更新 pynput 庫,例如使用pip install --upgrade pynput會再次出現此問題。

修復 Windows

pynput的keyboard package的變化

  1. Go 到“\Lib\site-packages\pynput\keyboard”。
  2. 打開“ init .py”文件。
  3. 在文件的開頭,添加以下導入: from pynput.keyboard import _win32
  4. 找到行: backend = backend(__name__)並將其替換為行: backend = _win32

pynput的mouse package的變化

  1. Go 到“\Lib\site-packages\pynput\mouse”。
  2. 打開“ init .py”文件。
  3. 在文件的開頭,添加以下導入: from pynput.mouse import _win32
  4. 找到行: backend = backend(__name__)並將其替換為行: backend = _win32

修復 macOS 和 Linux

在 macOS 或 Linux 上,執行與上述相同的步驟,但根據您的平台將“win32”的出現替換為以下內容:

  • 在 macOS 上,將“win32”替換為“darwin”。
  • 在 Linux 上,將“win32”替換為“xorg”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM