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

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

ただいまの
回答率

88.03%

python 3.7を用いたプログラムのexe化

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 2,222

score 21

。### 前提・実現したいこと
python 3.7を用いたプログラムのexe化を行いたいです。

発生している問題・エラーメッセージ

jupyter notebookでtkinterやsklearnを使用してプログラムを作成し、「  .py」ファイルで保存しました。
pyinstallerでexe化を行ったところ、successfulと表示されファイルは作成できました。
しかし、ファイルをクリックすると以下のように表示され動きません。

「Fatal error detected
failed to execute script file名」

補足情報(FW/ツールのバージョンなど)

プログラミングを始めたばかりで、色々調べてもよく分からず質問させていただきました。
調べ方からよく分かっておりません。どうぞよろしくお願いいたします。

追記

y_waiwai さん
ご指摘ありがとうございます。
下記のようにcmdに打ち込みました。
pyinstaller ファイル名.py --onefile --noconsole -p "C:\Users\ユーザー名\Anaconda3\Lib\tkinter"

tomy-c さん
ご指摘ありがとうございます。
載せていただいた記事を参考に上記のように「-p "C:\Users\ユーザー名\Anaconda3\Lib\tkinter"」の部分を追記しましたが、
改善されませんでした。
tomy-c さんのご質問も拝見しましたが、難しく理解が進みません。
私のファイルでは「*.specファイルのpathexに必要なライブラリが入っていないこと」が原因なのかと思うのですが、
それを入力するために、PEMファイルというものを使用されたということでしょうか?
PEMファイルというのは必ず必要なのでしょうか?
pathexにライブラリのパスを打ち込めばいいのでしょうか?

Pythonのプログラムでは以下のようなライブラリを使用しました。
import tkinter.filedialog as tkfd
import tkinter as tk
from tkinter import messagebox
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
from sklearn import model_selection 
from sklearn.cross_decomposition import PLSRegression 

これに対するライブラリパスとはどうやったらわかるのでしょうか?

とんちんかんな質問かと思いますが、ご教授頂きたくよろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正の依頼

  • tomy-c

    2019/07/30 09:54

    申し訳ございません。
    pemファイルではなくspecファイルの間違いでした。

    pemはSSL証明書関係のファイル(自分の場合、googleAPIと通信する必要があったため)で、specファイルはpyinstallerで実行ファイル化する際に必要なリソース等の情報を参照させる為に使います。
    下記が参考になると思います。
    https://qiita.com/cheuora/items/39b3203400e1e15248ed

    キャンセル

  • tomy-c

    2019/07/30 10:03 編集

    ライブラリのパスについて、
    pyinstallerを通す前のコードが正常に動いている前提であれば
    元のコードの頭に下記のコードを追加することによって実行時にどのライブラリを参照しているか見ることが出来ると思います。
    私の場合、pyinstallerで作成した実行ファイルが吐き出したライブラリパスと元のプログラムが吐き出したライブラリパスを比較しながら不足分をspecファイルに追記して対応しましたが恐らく元のプログラムが吐き出したライブラリパスを全部specファイルに指定してあげれば問題ないと思います。

    # デバッグ用(読み込んでいるディレクトリの確認)
    import pprint
    pprint.pprint(sys.path)

    キャンセル

  • tomy-c

    2019/07/31 09:42

    追記しますが、
    下記前提であれば真っ先に参照するのは以下だと思われます。
    C:\Program Files\Python[バージョン番号]\Lib\site-packages
    要するにpythonのインストール先です。
    前提:
    ・python3インストール時にAllUserでインストール
    ・sys.pathをappendしていない
    ・pip時にインストール先を特に変更していない

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 88.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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