如何修复pyInstaller和pynput的不兼容性

2024-05-18 11:05:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用pyInstaller创建一个应用程序,它有一个致命错误。我正在使用这个软件包

从pynput.keyboard导入控制器

有人知道如何修复pyInstaller和pynput的不兼容性吗? 也许我可以用一些pyInstaller的钩子?如何安装它

重要事实:

  • 我正在Anaconda和spyder中使用python3.8
  • My script.py已成功执行
  • 我创建的其他应用程序(没有pynput)没有问题
  • 我已经用PyNPUT1.7和1.6.8测试过了
  • 我已经卸载并重新安装了PyInstall

以下是警告文件:

missing module named _posixsubprocess - imported by subprocess (optional), multiprocessing.util (delayed)
<br>
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), http.server (delayed, optional), webbrowser (delayed), netrc (delayed, conditional), getpass (delayed), distutils.util (delayed, conditional, optional)
<br>
missing module named posix - imported by os (conditional, optional), shutil (conditional)
<br>
missing module named resource - imported by posix (top-level), test.support (optional)
<br>
missing module named 'org.python' - imported by copy (optional), xml.sax (delayed, conditional)
<br>
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
<br>
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
<br>
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
<br>
missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed)
<br>
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
<br>
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
<br>
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
<br>
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
<br>
missing module named _scproxy - imported by urllib.request (conditional)
<br>
missing module named termios - imported by tty (top-level), getpass (optional)
<br>
missing module named 'java.lang' - imported by platform (delayed, optional), xml.sax._exceptions (conditional)
<br>
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
<br>
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
<br>
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
<br>
missing module named vms_lib - imported by platform (delayed, conditional, optional)
<br>
missing module named java - imported by platform (delayed)
<br>
missing module named _winreg - imported by platform (delayed, optional)
<br>
missing module named console - imported by pyreadline.console.ansi (conditional)
<br>
missing module named startup - imported by pyreadline.keysyms.common (conditional), pyreadline.keysyms.keysyms (conditional)
<br>
missing module named sets - imported by pyreadline.keysyms.common (optional)
<br>
missing module named System - imported by pyreadline.clipboard.ironpython_clipboard (top-level), pyreadline.keysyms.ironpython_keysyms (top-level), pyreadline.console.ironpython_console (top-level), pyreadline.rlmain (conditional)
<br>
missing module named StringIO - imported by pyreadline.py3k_compat (conditional), six (conditional)
<br>
missing module named IronPythonConsole - imported by pyreadline.console.ironpython_console (top-level)
<br>
missing module named clr - imported by pyreadline.clipboard.ironpython_clipboard (top-level), pyreadline.console.ironpython_console (top-level)
<br>
missing module named org - imported by pickle (optional)
<br>
runtime module named six.moves - imported by pynput._util (top-level)
<br>

Tags: brbytopimportliblevelmultiprocessingoptionalnamed
1条回答
网友
1楼 · 发布于 2024-05-18 11:05:26

我已经读了很多关于隐藏导入的内容,并尝试了代码

pyinstaller  hidden-import=pynput.keyboard._win32  hidden-import=pynput.mouse._win32 script.py

令人惊讶的是,它使.exe工作正常。对于其他类似的问题,我建议检查herehere。此命令已在Windows中测试并运行。小小的改动也使它对Linux有用

我失败的一点是,我忽略了选项“鼠标”,因为我没有使用它这些隐藏导入是必需的

相关问题 更多 >