cx-Freeze input()でエラーが・・その対策

cx_Freeze

cx-Freezeを用いてexe化をした際にエラーが出てしまった件


exe化した際にはエラーは出ていなかったのですが、実際exeファイルを実行すると以下のエラーが発生

RuntimeError: input(): lost sys.stdin というエラーは、Pythonのinput()関数が実行されるときに標準入力が利用できないことが原因のようです。


対策

ということで、簡潔に言うと

setup.pyで以下の部分を修正します。

import sys
from cx_Freeze import setup, Executable

build_exe_options = {
    # 取り込みたいパッケージ
    "packages": ["pydicom","fileselect"],
    # 除外したいパッケージ
    "excludes": ["matplotlib","numpy","seaborn","opencv-python"],
}

base = None
if sys.platform == "win32":
    base = "Win32GUI"  #←ここをNoneに変更
    #base = None

setup(
    # アプリの名前
    name="Application Name",
    version="0.1",
    # アプリの説明
    description="explanation",
    options={
        "build_exe": build_exe_options,
    },
    executables=[
        Executable(
            # 実行ファイル名を記載します。
            script="filename.py",
            base=base,
        ),
    ],
)

13行目の base = “Win32GUI”を

base = None

に変更するだけ。


baseとは

変更した設定のbaseとはアプリケーションの種類の設定になるようです。

‘Win32GUI’

GUIアプリケーションを用いたものとなり、コンソールは使用できないようになるそうです。


None

コンソールアプリケーション

という事になるそうです。


どなたかの役にたてば幸いです。

もしよろしければ、「いいね」押してくださいね。

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