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

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

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

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

Q&A

解決済

2回答

10574閲覧

PyInstallerでexeファイル化する時にkivyのsoundloaderで音を読み込んでいると実行できない

isopyon

総合スコア8

Python

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

0グッド

1クリップ

投稿2018/01/13 06:15

編集2018/01/17 12:55

閲覧ありがとうございます。

kivyとPyInstallerを使いタイマーアプリを作ったのですが、exeファイルを起動しようとすると、「Falled to execute script main」と出てきて起動できません。

プログラムの最初でsoundloaderでmp3ファイルをを読み込んでいるのですが、それに関する記述をコメントアウトしたところ、問題なくexe化できました。ただ、それだと音が鳴らないので困っています。

どうすればエラーが出ずにexeファイル化できますか、または、exeファイルで音を出すにはどうすればいいですか?

環境
python 3.4.5
kivy 1.10.0
PyInstaller 3.3.1

こちらのサイトを参考にexe化しました
https://www.closetoyou.jp/kivy/introduction-to-kivy16/

追記
下記のコードで試したのですが、やはりexe化の際にエラーがでてきます。

OS windows10

使用ファイル
・main.py
・timer.kv
・default.mp3

pyinstaller --noconsole main.py
pyinstaller main.spec

python

1from kivy.app import App 2from kivy.uix.screenmanager import ScreenManager, Screen 3from kivy.core.audio import SoundLoader 4from kivy.resources import resource_add_path 5import sys 6 7if hasattr(sys, '_MEIPASS'): 8 resource_add_path(sys._MEIPASS) 9 10sm = ScreenManager() 11endSound = SoundLoader.load('default.mp3') 12endSound.volume = 0.1 13 14 15class TimerScreen(Screen): 16 17 def start(self): 18 endSound.play() 19 20 def stop(self): 21 endSound.stop() 22 23 24class TimerApp(App): 25 26 def build(self): 27 sm.add_widget(TimerScreen(name='time')) 28 return sm 29 30 31if __name__ == '__main__': 32 TimerApp().run() 33

kv

1#:kivy 1.10.0 2<TimerScreen>: 3 BoxLayout: 4 Button: 5 text: 'start' 6 on_press: root.start() 7 Button: 8 text: 'stop' 9 on_press: root.stop() 10

spec

1# -*- mode: python -*- 2from kivy.deps import sdl2, glew 3block_cipher = None 4 5 6a = Analysis(['main.py'], 7 pathex=['D:\Users\UserName\Documents\kivy_project_files\20180117 timer'], 8 binaries=[], 9 datas=[('default.mp3', '.'), ('timer.kv', '.')], 10 hiddenimports=[], 11 hookspath=[], 12 runtime_hooks=[], 13 excludes=[], 14 win_no_prefer_redirects=False, 15 win_private_assemblies=False, 16 cipher=block_cipher) 17pyz = PYZ(a.pure, a.zipped_data, 18 cipher=block_cipher) 19exe = EXE(pyz, 20 a.scripts, 21 exclude_binaries=True, 22 name='main', 23 debug=False, 24 strip=False, 25 upx=True, 26 console=False ) 27coll = COLLECT(exe, 28 a.binaries, 29 a.zipfiles, 30 a.datas, 31 *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)], 32 strip=False, 33 upx=True, 34 name='main') 35

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

コードとspecファイルがないので何とも言えないのですが、おそらく該当部分のパスにmp3ファイルがない(PyInstallerで生成時にmp3ファイルが取り込まれていない)ことが問題かと思われます。
参考のサイトをみるとPyInstaller実行時に–onefile を指定して一つのexeファイルにしているかと思います。
exe作成時に –onefile のオプションを外してexe化してみてください、そうするとdistフォルダが生成されれその中でdllなどがありますが、そのフォルダ内にmp3ファイルが取り込まれているかを確認してみてはいかがでしょうか。

投稿2018/01/16 21:36

dario_okazaki

総合スコア282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

isopyon

2018/01/17 12:56

回答ありがとうございます。 --onefileを外して実行してみたところ、pm3、kvファイル共にdictフォルダに入っていることが確認できたのですが、依然エラーが出てきます。
dario_okazaki

2018/01/17 20:58

noconsole のオプションを外して実行してみると以下のエラーが表示されました ``` File "kivy\lib\gstplayer\_gstplayer.pyx", line 233, in kivy.lib.gstplayer._gstplayer.GstPlayer.load kivy.lib.gstplayer._gstplayer.GstPlayerException: Unable to create a playbin [14664] Failed to execute script main ``` こちらですが公式のIssueをみると上がっていてPyInsllerをアップデートすると解決するそうなので一度試してみてください。 https://github.com/kivy/kivy/issues/5099
isopyon

2018/01/19 04:26

エラーですが、無事自己解決できました。 親切に回答ありがとうございました。
guest

0

自己解決

main.pyの先頭行に
import os
os.environ["KIVY_AUDIO"] = "sdl2"

と記述した所、エラーなくexe化できました。

参考サイト
https://rabbitboots.com/blog/category/pyinstaller/
https://pyky.github.io/kivy-doc-ja/guide/environment.html

投稿2018/01/19 04:25

isopyon

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問