質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Python 3.x

    6927questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Matplotlib

    344questions

    MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

  • Qt

    149questions

    QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Pythonで作った実行ファイルが開かない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 406

Yhaya

score 90

 解決したい問題

Python3.6でpyqtを使ってmatplotlibのグラフを表示するGUIアプリケーションを作成し、それをcx_Freezeを使ってEXE化しました。しかしできた実行ファイルを実行しようとしても何も反応しません。
どうすればよいのでしょうか

.pyのファイルを実行すると、ちゃんとGUIが起動して期待している動作を果たすので、おそらくsetup.pyの問題だと思うのですが、、、

import sys
from cx_Freeze import setup, Executable
import os
os.environ['TCL_LIBRARY'] = "C:\\Users\\yudai\\Anaconda3\\Library\\lib\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\Users\\yudai\\Anaconda3\\Library\\lib\\tk8.6"

# -------
# Setup
# -------
packages = []
includes = ["PyQt5.QtWidgets", "PyQt5.QtCore", "os", "matplotlib.pyplot",
            "bs4", "filemanage.py", "pyperclip", "matplotlib.backends.backend_qt5agg",
            "queue", "idna.idnadata", "numpy.core._methods", "numpy.lib.format", "matplotlib.legend_handler"]
excludes = []
base = None

if sys.platform == 'win32' : base = 'Win32GUI'

# exe にしたい python ファイルを指定
exe = Executable(script = 'main.py',
                 base = base)

# セットアップ
setup(name = 'Analysis Program',
      version = '0.0.1',
      description = 'Help you analyze data',
      options = {"build_exe": {"includes":includes,
                               "excludes":excludes, "packages":packages}},
      executables = [exe])

ちなみに、プログラムの中心であるmain.pyではインポートは次のようになっています。

from PyQt5.QtWidgets import (QApplication, QFileDialog, QGridLayout, QHBoxLayout, QMainWindow,
                             QMessageBox, QLabel, QLineEdit, QListWidget, QPushButton,
                             QVBoxLayout, QWidget, QComboBox, QSlider, QLCDNumber)
from PyQt5.QtCore import Qt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
import filemanage
import os
import pyperclip


ここでfilemanageというのは自分で作った.pyファイルで次のものをインポートしています。

import numpy as np
from scipy.fftpack import fft

よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hayataka2049

    2018/06/03 20:15

    コマンドプロンプトからexeを実行するとエラーが出てきたりしませんか?

    キャンセル

  • Yhaya

    2018/06/03 20:17

    それもやってみたのですが、何も起こらず、入力待機状態に戻ります

    キャンセル

回答 1

checkベストアンサー

0

CX_FREEZEはsetup.pyの設定で簡単に動かなくなるので、特に理由が無ければpyinstallerのほうが楽でいいですよ。設定ファイルいらない上に、python3.6に対応しています。

pyinstaller Quick Guide

  1. コマンドラインからpip install pyinstallerでインストールして下さい。
  2. pyinstaller ファイル名 --onefileで、モジュールとか全部入りのexeファイル単体を吐き出してくれます

こんな感じでbuild.batみたいにして置いておくと楽ちんです

pyinstaller working.py ^
    --log-level="ERROR" ^ # これが無いとエラーで埋め尽くされる
    --onefile ^ # 単体exeとして出力
    -n testbuild # ファイル名

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/03 21:01

    回答ありがとうございます。試してみたのですが、
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 130: invalid start byte
    とエラーが出て実行できませんでした。「position 130」というのはソースコードの130行目ということでしょうか?ソースコードの130行目は空行で、スペースも1つもないのですが、、、

    キャンセル

  • 2018/06/03 21:19

    あ~windows7だとそんな感じのエラーが出た記憶が...

    - OSは何を使っていますか?
    - それとソースファイルの文字コードはutf-8でしょうか?

    キャンセル

  • 2018/06/03 21:28

    windows10で、ソースコードはutf-8になっています

    キャンセル

  • 2018/06/03 21:46

    コマンドプロンプトがutf-8になっていなかったので直して再実行したらエラーが出ず、main.exeができましたが実行してもコマンドプロンプトのような画面が出るだけで何もできません。

    キャンセル

  • 2018/06/03 21:56

    う~ん、何だろうか...元のファイルは実行出来ているようなので、やっぱりモジュールのインポートが出来てないのかな...

    お役に立てず申し訳ないです。
    何というかバイナリ化はこういう理不尽なエラーが多いですよね...

    キャンセル

  • 2018/06/03 22:11

    オプションで--pathsつけてPyQt5のパス明示したら出るようになりました。ありがとうございます。

    キャンセル

  • 2018/06/03 22:12

    良かったです!お疲れ様でした。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • Python 3.x

    6927questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Matplotlib

    344questions

    MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

  • Qt

    149questions

    QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。