Life & Style

pyinstallerで実行ファイルを作成する際、noconsoleのオプションを指定時に、作成された実行ファイルが動作しない場合がある。

[エラー6]ハンドルが無効です。というエラーが表示される場合の解決方法を紹介する。noconsoleオプションをつけると、プログラム内のsubprocessがうまく動作しないためである。

対象スクリプトに追記

対象のスクリプトに下記を記載する。

import subprocess
_original_constructor = subprocess.Popen.__init__

def _patched_constructor(*args, **kwargs):
    for key in ('stdin', 'stdout', 'stderr'):
        if key not in kwargs:
            kwargs[key] = subprocess.PIPE

    return _original_constructor(*args, **kwargs)

subprocess.Popen.__init__ = _patched_constructor

PICK UP

  • コメント ( 0 )

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。