manabuQiita
@manabuQiita (mnb)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Pythonの自作外部関数呼び出し後に「OSError: [WinError 6] ハンドルが無効です。」が発生する

  • 環境など

    • Windows10 Home
    • Python 3.8.5
  • モジュール構成
    main.py
    └ submodule1.py

main.py

import submodule1 as sm
cp = subprocess.run(['start', CONST.APPNAME , shell=True)
・・・中略
sm.xxx()

submodule1.py

def xxx():
  ・・・処理
  return

処理概要

  • main.py内で別のアプリケーションをsubprocess.runで呼び出している。
  • その後、自作モジュールsubmodule1.pyを呼び出している。
  • main.pyはコマンドプロンプトから直接実行している。

エラー内容

Exception ignored in:
Traceback (most recent call last):
File "C:\Users\XXXX\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 945, in del
self.internal_poll(_deadstate=_maxsize)
File "C:\Users\XXXX\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 1344, in _internal
poll
if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:
OSError: [WinError 6] ハンドルが無効です。

やりたいことと聞きたいこと

単純に記述量が多く、処理を分割したいだけなので引数なしで別モジュールとして分割しています。しかしハンドルが無効ですとエラーがでます。
メインモジュール単体とサブモジュール単体それぞれで動かすと正常終了しますが、組み合わせると上記のエラーが起こります。
単体だとうまくいくのに自作関数と組み合わせるとエラーになるのがよく分からず、エラーメッセージを見るとsubprocessが何か関係してそうというのと、恐らくプロセス関係のことだと推測しましたが、その先どう調査すればよいかも分からず、行き詰ってしまったため、質問させて頂きました。

何かヒントを頂けると幸いです。
よろしくお願いします。

0

1Answer

Your answer might help someone💌