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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Matplotlib

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

JupyterNotebookをPyinstallerでEXE化した際の実行エラー

sho-G
sho-G

総合スコア2

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Matplotlib

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2回答

0評価

0クリップ

931閲覧

投稿2021/12/25 15:29

編集2021/12/26 11:50

Jupyter lab/notebookで作ったコードをExe化して実行したい

Jupyter labで、以下のようなコードを作成し、EXE化して配布したいです。
・ファイルダイアログを表示して、複数のcsvファイルを読み込み、データフレーム化
・以下、データフレームをPandasで数値処理して、数値処理したデータに加えて図面を表示

Jupter labで実行した際には、エラーは発生せず、問題なく実行することができました。
そこで、pyinstallerで単一のファイルにexe化して実行すると、ファイルダイアログは表示され、ファイルを選択はできますが、下記のようなエラーが発生して処理が止まってしまいました。
*最初の部分のTry項をコメントアウトしているのは、エラー内容を確認するためです。

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

Traceback (most recent call last): File <exe化した元ファイルの名前.py> line35, in <module> File <exe化した元ファイルの名前.py> line27, in file dialog AttributeError: 'NoneType' object 'run_line_magic' [11776] Failed to execute script 'exe化した元ファイルの名前' due to unhandled exception!

該当のソースコード

Python

#!/usr/bin/env python # coding: utf-8 # In[1]: ##drophead and normarized ##IWATSU Time_scale = 1e+9 from IPython import get_ipython import pandas as pd import matplotlib.pyplot as plt from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN normarized = False def file_dialog(): # try: import os, tkinter, tkinter.filedialog, tkinter.messagebox root = tkinter.Tk() root.attributes('-topmost', True) root.withdraw() root.lift() root.focus_force() fTyp = [("","*.csv")] files = tkinter.filedialog.askopenfilenames(filetypes = fTyp) get_ipython().run_line_magic('gui', 'tk') #読み込みテスト df = pd.read_csv(files[0], skiprows=18, usecols=[0,1], header=0) #(chによってcolsを変える) return files # except: # print("データが読み込みできませんでした。形式やデータの内容が正しいか確認してください。") # return file_dialog() print("ファイルの読み込みを行います。IWATSUのDecayデータ・.csvファイルをファイルダイアログから選んでください。") file_dialog_result = file_dialog() files = file_dialog_result print("データの読み込みに成功しました。") for file in files: # tsv (tab-separated values) df = pd.read_csv(file, skiprows=18, usecols=[0,1], header=0) #(chによってcolsを変える) #df = pd.read_csv(file) df.columns = ['Time(s)', 'Ch1 V'] #df["Ch1 V"] = - df["Ch1 V"] Int_min = df['Ch1 V'].max() if Int_min > 0: df['Ch1 V'] = df['Ch1 V'] - Int_min Int_max = df['Ch1 V'].min() Int_max_time = df.loc[df['Ch1 V'] == Int_max,'Time(s)'].values[-1] Int_max_filename = Decimal(str(-Int_max)).quantize(Decimal('0'), rounding=ROUND_HALF_UP) if Int_max_filename < 0: continue df['Time(s)'] = (df['Time(s)'] - Int_max_time) * Time_scale if normarized: df['Ch1 V'] = - df['Ch1 V'] * 1000 else: df['Ch1 V'] = - df['Ch1 V'] #df['Ch1 V'] = (df['Ch1 V'] / Int_max)*1000 fig = plt.figure(figsize=(85/25.4, 85/25.4/2), dpi=128) #plt.scatter(df['Time(s)'], df['Ch1 V'], s=0.4, alpha=0.6, label=Int_max_filename) plt.plot(df['Time(s)'], df['Ch1 V'], lw=1.0) #plt.legend(loc="best") plt.title(file[-30:], fontsize=8) plt.yscale("log") plt.savefig((f'{file}-thum.png'), bbox_inches="tight") plt.show() df = df[['Time(s)', 'Ch1 V']] df = df.rename(columns={'Ch1 V': 'Int'}) df.to_csv(f'{file}-drop-header-{Int_max_filename}.txt', index=False, sep="\t") print("end")

試したこと

pyinstaller <filename> --clean -Fでexe化しています。

必要なパッケージが仮想環境に入っているかどうか確認した。

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

conda version : 4.8.3 conda-build version : 3.18.11 python version : 3.7.7.final.0 virtual packages : __cuda=11.3

解決法

pyinstallerの前に、python XXX.pyで実行することによって確認できる。
余分な行 (get_ipython().run_line_magic('gui', 'tk'))を削除した。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

会員登録して回答してみよう

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

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Matplotlib

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。