teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

最小構成での確認方法を追記

2020/09/06 06:14

投稿

Milly
Milly

スコア167

answer CHANGED
@@ -1,3 +1,44 @@
1
1
  最新の pynput 1.7.* と Pyinstaller の組み合わせには問題があるようです。
2
2
  pynput 1.6.8 を利用してみてください。
3
- `pip install pynput==1.6.8`
3
+ `pip install pynput==1.6.8`
4
+
5
+ pynput 1.7.1 利用時のエラー例:
6
+ ```
7
+ (.venv) C:\work\tmp\pynputprj\dist>hoge.exe
8
+ Traceback (most recent call last):
9
+ File "hoge.py", line 1, in <module>
10
+ File "c:\work\tmp\pynputprj.venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
11
+ exec(bytecode, module.__dict__)
12
+ File "pynput\__init__.py", line 40, in <module>
13
+ File "c:\work\tmp\pynputprj.venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
14
+ exec(bytecode, module.__dict__)
15
+ File "pynput\keyboard\__init__.py", line 31, in <module>
16
+ File "pynput\_util\__init__.py", line 76, in backend
17
+ ImportError
18
+ [60876] Failed to execute script hoge
19
+ ```
20
+
21
+ ---
22
+ 上記で解決しない場合、クリーンで最小の構成で問題が発生するか確認してください。
23
+
24
+ - venv を利用してクリーンな環境を用意する
25
+ - 簡単なプログラムでエラーが再現するか確認する
26
+ - エラー内容はスタックトレースも含めてすべて張り付ける
27
+
28
+ ```cmd
29
+ > mkdir myproj
30
+ > cd myproj
31
+ > python -m venv _venv
32
+ > _venv\Scripts\activate.bat
33
+ > pip install pyinstaller pynput==1.6.8
34
+ > notepad mytest.py
35
+ -- 編集 --
36
+ > pyinstaller mytest.py --onefile
37
+ > dist\mytest.exe
38
+ ```
39
+
40
+ ```python3
41
+ # mytest.py
42
+ import pynput
43
+ print(dir(pynput))
44
+ ```