🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Tcl

Tclは、インタープリタ型のプログラミング言語。リスト処理や連想配列といった特長を持ち、文法もシンプルです。拡張や他言語への組み込みが簡単にでき、アプリケーション拡張にための組み込み言語として用いられます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

2944閲覧

Ruby ocraでtkを用いたGUIプログラムを実行ファイル化したが、上手く起動できない。

qiyuren

総合スコア29

Tcl

Tclは、インタープリタ型のプログラミング言語。リスト処理や連想配列といった特長を持ち、文法もシンプルです。拡張や他言語への組み込みが簡単にでき、アプリケーション拡張にための組み込み言語として用いられます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2021/02/07 17:11

編集2021/02/07 17:15

前提・実現したいこと

Ruby/Tkのgemを用いたGUIプログラムを作成し、配布しようと思っておりまして、
ocraでexeファイル化しようとしたところ、exeファイルは作成されたのですが、
実行すると、以下エラーが発生してGUIがでてきません。(エラーコードは画像からテキスト化したので、読みづらくすみません)

エラーを見たところ、Tkのgemをプログラムが探し出せないように思えますが、ocra実行時にはしっかり、tkのgemはインクルードされているように思えます。
(自分は、tcltkライブラリをocraに詰めていなかったからエラーしたのではないかと推測しております。)

色々調べたところ、ocraはtkと相性が良くないようですが、うまく、exe化できる方法をご教授いただければ幸いでございます。

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

exe実行時エラー

Traceback(mostrecentcalllast): 4:fromC:/Users/homedir/AppData/Local/Temp/ocr7E1.tmp/src/tk.rb:1:in<main>' 3:fromC:/Users/homedir/AppData/Local/Temp/ocr7E1.tmp/src/tk.rb:1:in'require_relative' 2:fromC:/Users/homedir/AppData/Local/Temp/ocr7E1.tmp/src/common.rb:7:in'<top>'(required) 1:fromC:/Users/homedir/AppData/Local/Temp/ocr7E1.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in'require' C:/Users/homedir/AppData/Local/Temp/ocr7E1.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in'require':cannotloadsuchfile--tk(LoadError) 8:fromC:/Users/homedir/AppData/Local/Temp/ocrC709.tmp/src/tk.rb:1:in'main' 7:fromC:/Users/homedir/AppData/local/Temp/ocrC709.tmp/src/tk.rb:1:in'require_relative' 6:fromC:/Users/homedir/AppData/Local/Temp/ocrC709.tmp/src/common.rb:7:i n<top(required) 5:fromC:/Users/homedir/AppData/Local/Temp/ocrC709.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in'require' 4:fromC:/Users/homedir/AppData/local/Temp/ocrC709.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in'rescue'in'require' 3:fromC:/Users/homedir/AppData/Local/Temp/ocrC709.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in'require' 2:fromC:/Users/homedir/AppData/local/Temp/ocrC709.tmp/lib/ruby/gems/2.6.0/gems/tk0.3.0/lib/tk.rb:7:in<top(required) 1:fromC:/Users/homedir/AppData/Local/Temp/ocrC709.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in'require' C:/Users/homedir/AppData/Local/Temp/ocrC709.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in'require':126:指定されたモジュールが見つかりません -C:/Users/homedir/AppData/Local/Temp/ocrC709.tmp/lib/ruby/gems/2.6.0/gems/tk0.3.0/lib/tcltklib.so(LoadError)

ocra実行時のログ

=== Loading script to check dependencies === Detected gem did you mean-1.3.0 (loaded, files) === 19 files, 20063 bytes == Detected gem ocra-1.3.11 (loaded, files) 5 files, 271800 bytes == Detected gem mini portile2-2.4.0 (loaded, files) 9 files, 8337 bytes === Detected gem nokogiri-1.10.10-x64-mingw32 (loaded, files) === 70 files, 18188251 bytes === Detected gem stringio-0.0.2 (loaded, files) === WARNING: Gem stringio-0.0.2 root folder was not found, skipping === Detected gem strscan-1.0.0 (loaded, files) === WARNING: Gem strscan-1.0.0 root folder was not found, skipping === Detected gem date-2.0.0 (loaded, files) === WARNING: Gem date-2.0.0 root folder was not found, skipping === Detected gem zlib-1.0.0 (loaded, files) === WARNING: Gem zlib-1.0.0 root folder was not found, skipping === Detected gem csv-3.0.9 (loaded, files) === WARNING: Gem csv-3.0.9 root folder was not found, skipping === Detected gem forwardable-1.2.0 (loaded, files) === WARNING: Gem forwardable-1.2.0 root folder was not found, skipping === Detected gem tk-0.3.0 (loaded, files) === 428 files, 3119524 bytes === Detected gem chi Idprocess-3.0.0 (loaded, files) 19 files, 41779 bytes === Detected gem rubyzip-2.3.0 (loaded, files) 37 files, 98615 bytes === Detected gem selenium-webdriver-3.142.7 (loaded, files) === 71 files, 1038371 bytes === Detected gem fcnt1-1.0.0 (loaded, files) === WARNING: Gem font-1.0.0 root folder was not found, skipping === Detected gem logger-1.3.0 (loaded, files) === WARNING: Gem logger-1.3.0 root folder was not found, skipping === Detected gem ffi-1.13.1-x64-mingw32 (loaded, files) === 83 files, 1094398 bytes === Detected gem fileutils-1.1.0 (loaded, files) === WARNING: Gem fileutils-1.1.0 root folder was not found, skipping === Detected gem etc-1.0.1 (loaded, files) === WARNING: Gem etc-1.0.1 root folder was not found, skipping === Detected gem json-2.1.0 (loaded, files) === WARNING: Gem json-2.1.0 root folder was not found, skipping === Detected gem ostruct-0.1.0 (loaded, files) === WARNING: Gem ostruct-0.1.0 root folder was not found, skipping === Including 59 encoding support files (3792896 bytes, use --no-end to exclude) === Building tk.exe === Adding user-supplied source files === Adding ruby executable ruby.exe === Adding detected DLL C:/Ruby26-x64/bin/ruby_builtin_dlls/libgmp-10.dll === Adding detected DLL C:/Ruby26-x64/bin/ruby built in dlls/libssp-0.dll === Adding detected DLL C:/Ruby26-x64/bin/ruby built in dlls/libffi-6.d||| === Adding detected DLL C:/Ruby26-x64/bin/ruby built in dlls/zlibl.dll === Adding detected DLL C:/Ruby26-x64/msys64/mingw64/bin/tc 186.d|| === Adding detected DLL C:/Ruby26-x64/msys64/mingw64/bin/tk86.dll === Adding detected DLL C:/Ruby26-x64/msys64/mingw64/lib/reg1.3/tclreg13.dll === Adding external manifest C:/Ruby26-x64/bin/ruby_builtin_dils/ruby_builtin_di Is.manifest === Adding library files === Compressing 46131109 bytes _ZMA 19.00 (x86) : Igor Pavlov : Public domain : 2019-02-21 Input size: 46131109 (43 MiB) Dutput size: 8208037 (7 MiB) === Finished building tk.exe (8258745 bytes)

該当のソースコード

ruby

1#tk.rb 2require_relative "common" 3 4#以下TKのコード 5 6#common.rb 7require "nokogiri" 8require "open-uri" 9require 'net/http' 10require "date" 11require "csv" 12require 'uri' 13require "tk" 14

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

windows7
ruby 2.6.5
tk 0.3.0
ocra 1.3.11

参考URL
http://blawat2015.no-ip.com/~mieki256/diary/201012221.html
https://github.com/larsch/ocra/issues/29

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

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

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

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

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

kojix2

2021/02/09 05:48

Ocraを実行した時にどのようなコマンドを実行したか記述した方が良いと思います。例えば `ocra fuga.rb C:\Ruby21\lib\tcltk --no-autoload --add-all-core`
kojix2

2021/02/09 05:50

またRuby/Tkは以前はRubyの標準ライブラリとしてすべてのRubyに同封されていましたが、今はされていません。そういう点で、昔のサイトに紹介されている方法が動かなくなっている可能性は高そうです。
qiyuren

2021/02/09 06:14

ご回答ありがとうございます。 解決しましたので、記入させて頂きます。
guest

回答1

0

自己解決

https://github.com/larsch/ocra/issues/131

こちらに、解決法が乗っていたので、以下の通り実行したら、Tk起動できました。
やはり、tcltkライブラリが同梱されていないことが原因でした。
msysのdllも同梱させます。
ちなみに、実行環境はruby2.6.0の誤りでした。失礼しました。

ocra tk.rb C:\Ruby26-x64\msys64\usr\bin\msys-2.0.dll C:\Ruby26-x64\msys64\mingw64\lib\tcl8.6 C:\Ruby26-x64\msys64\mingw64\lib\tk8.6 --no-autoload --add-all-core

投稿2021/02/09 06:19

qiyuren

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問