【5分で解決】pyinstallerでexe生成中にでるエラーコード110

【5分で解決】pyinstallerでexe生成中にでるエラーコード110

 

【悩み】
・pyinstallerでexeを生成したいが途中でエラーが発生しうまくいかない。
・pywin32.pywintypes.errorのEndUpdateResourceWを解決したい。
・110, ‘EndUpdateResourceW’というエラー内容の意味は?



こういった「悩み」に答えます。
 

【本記事の内容】
① pyinstallerでexe生成中にpywin32.pywintypes.errorが発生した経緯
➁ pyinstallerでexe生成中にpywin32.pywintypes.errorが発生した原因
➂ pyinstallerでexe生成中にpywin32.pywintypes.errorを解決する方法



本記事を実践したことで、5分くらいで「win32ctypes.pywin32.pywintypes.error: (110, ‘EndUpdateResourceW’, ‘指定されたデバイスまたはファイルを開けません。’)」のエラーを解決できました(下の動画参照)。
 

pyinstallerでexe生成中にでるエラーコード110を解決する方法



記事の前半では「本エラーの発生経緯」を解説します。

記事の後半では「本エラーの発生原因」から「解決する方法」までを紹介します。
 

この記事を読み終えることで、「エラーで動かないpyinstallerのコマンドを解消でき、正常にexeファイルを生成できる状態」になるはずです。

 

pyinstallerでexe生成中にpywin32.pywintypes.errorが発生した経緯


「pyinstallerでexe生成中にpywin32.pywintypes.errorが発生した経緯」に関して解説します。
 

本事象が発生した当時は、納期が近く、「数日前までは発生しなかったのになぜできない?」と思いつつ、慌てふためいた記憶があります。



筆者は、以下のようなpyinstallerのコマンドを実行しexeファイルを生成しようと考えていました。

pyinstaller main.py --name auto-checker.exe --onefile --noconsole --icon=image/favicon.ico



上記のコマンドを実行したところ、以下のエラーが発生し、exeファイルは生成されない状態でした。

1324 INFO: Copying bootloader EXE to C:\Users\user\Dropbox\設定方法\python\word\checker\dist\auto-checker.exe.notanexecutable
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\win32ctypes\pywin32\pywintypes.py", line 35, in pywin32error
    yield
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\win32ctypes\pywin32\win32api.py", line 229, in EndUpdateResource
    _resource._EndUpdateResource(handle, discard)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\win32ctypes\core\ctypes\_util.py", line 64, in check_false
    raise make_error(function, function_name)
OSError: [WinError 110] 指定されたデバイスまたはファイルを開けません。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2288.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2288.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\Scripts\pyinstaller.exe\__main__.py", line 7, in <module>
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\__main__.py", line 194, in _console_script_run
    run()
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\__main__.py", line 180, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\__main__.py", line 61, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\building\build_main.py", line 971, in main
    build(specfile, distpath, workpath, clean_build)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\building\build_main.py", line 893, in build
    exec(code, spec_namespace)
  File "C:\Users\user\Dropbox\設定方法\python\word\checker\auto-checker.exe.spec", line 24, in <module>
    exe = EXE(
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\building\api.py", line 552, in __init__
    self.__postinit__()
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\building\datastruct.py", line 173, in __postinit__
    self.assemble()
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\building\api.py", line 653, in assemble
    winresource.RemoveAllResources(build_name)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\utils\win32\winresource.py", line 245, in RemoveAllResources
    win32api.EndUpdateResource(hsrc, False)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\win32ctypes\pywin32\win32api.py", line 228, in EndUpdateResource
    with _pywin32error():
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2288.0_x64__qbz5n2kfra8p0\lib\contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\win32ctypes\pywin32\pywintypes.py", line 37, in pywin32error
    raise error(exception.winerror, exception.function, exception.strerror)
win32ctypes.pywin32.pywintypes.error: (110, 'EndUpdateResourceW', '指定されたデバイスまたはファイルを開けません。')


 

本事象は、以下の日時と環境で発生しました。
動作確認済み日時:2022年12月12日
動作確認済み環境:Windows 11 pro



以上が、「pyinstallerでexe生成中にpywin32.pywintypes.errorが発生した経緯」となります。
 

pyinstallerでexe生成中にpywin32.pywintypes.errorが発生した原因


「pyinstallerでexe生成中にpywin32.pywintypes.errorが発生した原因」に関して解説します。
 

EndUpdateResourceWのエラーコード110が発生する原因としては、「ウィルス対策ソフト」や「セキュリティソフト」の影響となります。



本事象「pywintypes.error: (110, ‘EndUpdateResourceW’, ‘指定されたデバイスまたはファイルを開けません。’)」が発生する原因は、以下となります。
 

【発生原因】
エラーの意味:
「指定されたデバイスまたはファイルを開けません」です。
エラー箇所:
_util.py内の64行目にあるcheck_false関数で以下のエラーが発生
OSError: [WinError 110] 指定されたデバイスまたはファイルを開けません。
原因:
pyinstallerが開きたいファイルを開くことができていないためです。
開くことができない理由としては、主に以下が考えられます。
・ウィルス対策ソフトがpyinstallerのファイルアクセスを制限している
・Windowsセキュリティがpyinstallerのファイルアクセスを制限している



以上が、「pyinstallerでexe生成中にpywin32.pywintypes.errorが発生した原因」となります。
 

pyinstallerでexe生成中にpywin32.pywintypes.errorを解決する方法


「pyinstallerでexe生成中にpywin32.pywintypes.errorを解決する方法」に関して解説します。
 

今回は、Windows セキュリティを一時的に無効化し、本エラーを解消する方法を説明します。



まずは、windowsボタンをクリックし、下図のように「windows セキュリティ」を開きましょう。
 

windows セキュリティを開く



クリック後、「ウィルスと脅威の防止」をクリックし、下図赤枠の「設定の変更」を押してください。
 

ウィルスと脅威の防止に関する画面を開く



クリック後、「リアルタイム保護」配下にあるボタン(下図の赤枠)をクリックして、オンからオフに変更します。
 

リアルタイム保護をオフに変更



以上の操作を実施後に、再度pyinstallerのコマンドを実行しましょう。

pyinstaller main.py --name auto-checker.exe --onefile --noconsole --icon=image/favicon.ico
352 INFO: PyInstaller: 5.7.0
353 INFO: Python: 3.10.8
360 INFO: Platform: Windows-10-10.0.22000-SP0
361 INFO: wrote C:\Users\user\Dropbox\設定方法\python\word\checker\auto-checker.exe.spec
365 INFO: UPX is not available.
366 INFO: Extending PYTHONPATH with paths
['C:\\Users\\user\\Dropbox\\設定方法\\python\\word\\checker']
1078 INFO: checking Analysis
1205 INFO: checking PYZ
1247 INFO: checking PKG
1302 INFO: Bootloader C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\bootloader\Windows-64bit-intel\runw.exe
1304 INFO: checking EXE
1304 INFO: Building EXE because EXE-00.toc is non existent
1304 INFO: Building EXE from EXE-00.toc
1304 INFO: Copying bootloader EXE to C:\Users\user\Dropbox\設定方法\python\word\checker\dist\auto-checker.exe.notanexecutable
1313 INFO: Copying icon to EXE
1314 INFO: Copying icons from ['C:\\Users\\user\\Dropbox\\設定方法\\python\\word\\checker\\image\\favicon.ico']
1315 INFO: Writing RT_GROUP_ICON 0 resource with 62 bytes
1315 INFO: Writing RT_ICON 1 resource with 1128 bytes
1316 INFO: Writing RT_ICON 2 resource with 2440 bytes
1316 INFO: Writing RT_ICON 3 resource with 4264 bytes
1317 INFO: Writing RT_ICON 4 resource with 9640 bytes
1321 INFO: Copying 0 resources to EXE
1321 INFO: Embedding manifest in EXE
1324 INFO: Updating manifest in C:\Users\user\Dropbox\設定方法\python\word\checker\dist\auto-checker.exe.notanexecutable
1325 INFO: Updating resource type 24 name 1 language 0
1329 INFO: Appending PKG archive to EXE
1362 INFO: Fixing EXE headers
1695 INFO: Building EXE from EXE-00.toc completed successfully.



コマンド実行後、「successfully」が表示された場合、「正常にpyinstallerでexeファイルを生成できた」と判断できます。
 

上記の流れで、本事象を無事に解消できました。
 

pywintypes.error: (110, ‘EndUpdateResourceW’, ‘指定されたデバイスまたはファイルを開けません。’)が発生しても慌てる必要はないです。エラー内容を理解し、一つ一つ原因をつぶすことで本問題を解消できます。


 

【まとめ】pyinstallerでexe生成中にでるエラーコード110


いかがでしたでしょうか?

上記で紹介した「pywintypes.error: (110, ‘EndUpdateResourceW’, ‘指定されたデバイスまたはファイルを開けません。’)」エラーが発生した場合、「ウィルス対策ソフト」や「Windowsセキュリティ」を一時的に停止させることで解消できます。

最後にもう一度内容を確認しましょう。
 

【原因と解決方法】
・原因
 pyinstallerが開きたいファイルを開くことができていないため
・解決するための方法は2つ
 ウィルス対策ソフトを停止もしくはpyinstallerを監視対象外とする
 Windowsセキュリティを停止もしくはpyinstallerを監視対象外とする



本ブログでは、「業務の時短化に繋がるIT技術」や「クラウドやOSSの学び方」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。

>> IT技術やその学び方を発信しているサイト「駆け出し物語」(本ブログ)
 

コメント

タイトルとURLをコピーしました