otaniteruaki / menta_python

0 stars 0 forks source link

課題3について #7

Open otaniteruaki opened 3 years ago

otaniteruaki commented 3 years ago

■準備 GUIの全体像について https://www.youtube.com/watch?v=nuRDtyaOt_Y

【初心者向け】CUIとGUIの違いとその特徴。なぜ使い分ける必要があるのか。 https://tcd-theme.com/2019/12/cui-gui.html?gclid=Cj0KCQjws-OEBhCkARIsAPhOkIYelqPKH59iZAZKSuLIOsMTydHZOjVIZf9rTp0VM_rKB54fAtDwPBkaAk5gEALw_wcB

[Python] EelをつかってHTML/CSS/JavaScriptでGUIを構築 https://qiita.com/inoory/items/f431c581332c8d500a3b

■課題 https://github.com/marutoraman/study-03-desktop-01

デスクトップアプリ作成課題 検索課題で作った検索ツールをデスクトップアプリとして 操作性を高め、より価値の高いものにするための課題です。 これを習得すると+月2万円ほどの収入増加が見込めます。

view.pyがメインの実行ファイルです。これを実行するとデスクトップアプリが 表示されます。

説明:https://youtu.be/UsgiZGYkZrY 参考サイト:https://qiita.com/inoory/items/f431c581332c8d500a3b 完成形:https://youtu.be/wBi6_DcfRGQ

1 HTML使い検索ワード入力と検索ボタンを作ってください htmlフォルダ内のindex.htmlに対してHTMLタグを用いて追加してください

2 検索ワード入力が空だったらアラートを表示させ、検索はしないようにしてください

3 検索結果をデスクトップアプリの画面に表示できるようにtextareaタグを使って ログ表示領域を作成してください。

4 作成したログ表示領域にkimetsu_searchの結果を表示できるようにしてください

5 ログ表示領域が小さいので大きく表示できるようにclassを定義して、style.cssに処理を記述してください

6 CSVファイルの保存先をHTML画面から指定できるようにしてください

7 Pyinstallerを使って、1つの実行可能ファイルにパッケージ化してみよう。 pipでインストール後に以下コマンドを実行してみよう。 distフォルダに実行可能フィイルが格納されます。 顧客提供時は、このファイルを提供することでpythonのインストールは不要になります。 python -m eel <はじめに起動するpyファイル> <htmlのフォルダ名> --onefile

おまけ bootstrapを適用して、キレイな画面を作成してみてください。 以下のサイトのスターターテンプレートを適用し、レイアウトを調整してみてください。 https://getbootstrap.jp/docs/4.3/getting-started/introduction/

otaniteruaki commented 3 years ago

GUIの全体像について(メモ)

https://www.youtube.com/watch?v=nuRDtyaOt_Y

GUIについて

・基本はCUIとGUIの2パターン ・顧客はGUIはマストで納品してもらえると思っている

ライブラリ

・Kivy:独自のため使いづらい ・Tkinter:独自のため使いづらい ・Eel:HTMLベースのため使いやすい

EeLの使い方

・インストール: pip install eel ・構成  - フロントエンド:Html/CSS5/javascript  - バックエンド:Python ・フロントとバックの連携  - eel.expose で関数に付与することでpythonとjavascriptで連携できる ・CSSによる装飾が可能  - Bootstrapを活用してリッチに ・顧客への納品方法  - 実行形式に変換して提供  - Python -m eel <起動ファイル> <htmlフォルダ> --onefile

otaniteruaki commented 3 years ago

エラー:Pyinstallerを実行するとエラーが表示される

エラーが発生する過程

以下のコマンドを実行するとエラーが発生する

(venv) TO-mac:Lesson3 teruaki.otani$ python -m eel view.py .html/ --onefile

エラー内容


 File "/Users/teruaki.otani/Desktop/Python_menta/Lesson3/venv/lib/python3.8/site-packages/PyInstaller/building/build_main.py", line 476, in assemble
    self._check_python_library(self.binaries)
  File "/Users/teruaki.otani/Desktop/Python_menta/Lesson3/venv/lib/python3.8/site-packages/PyInstaller/building/build_main.py", line 581, in _check_python_library
    python_lib = bindepend.get_python_library_path()
  File "/Users/teruaki.otani/Desktop/Python_menta/Lesson3/venv/lib/python3.8/site-packages/PyInstaller/depend/bindepend.py", line 956, in get_python_library_path
    raise IOError(msg)
OSError: Python library not found: libpython3.8m.dylib, Python, Python3, libpython3.8.dylib, .Python
    This would mean your Python installation doesn't come with proper library files.
    This usually happens by missing development package, or unsuitable build parameters of Python installation.

    * On Debian/Ubuntu, you would need to install Python development packages
      * apt-get install python3-dev
      * apt-get install python-dev
    * If you're building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)

原因

pyenvでPythonをインストールするときのオプションに「--enable-shared」を使用する必要があるらしい。

やったこと

1)以下のサイトを参考に対処した

https://qiita.com/kanedaq/items/8bb33c135fd89991d548

2)しかし、同様のエラーが出た。

■原因

以下のコマンドでpythonのバージョンに差分が発生するのが問題か? pyenv versionsでバージョン確認するのと、普通にpython -Vでのバージョンが異なって表示されますが、どちらのが優先して適用されるのか?


(venv) TO-mac:Lesson3 $ pyenv global
3.7.4
(venv) TO-mac:Lesson3 $ pyenv versions
  system
  3.6.5
* 3.7.4 (set by /Users/TO/.pyenv/version)
  3.8.3
(venv) TO-mac:Lesson3 $ python -V
Python 3.8.3

■結論

https://qiita.com/koooooo/items/b21d87ffe2b56d0c589b

この記事の、「pyenvでのpythonのバージョンがpython -vと違う時の対処法」で記載の方法で、上記の原因を解消できた。

やはり、1)の時点ではpyenvのバージョンが更新されたが、実際はデフォルトのpythonが優先して使用されていたので、 再インストールしてもそれが反映されていなかったのだ。

■解決方法

https://qiita.com/koooooo/items/b21d87ffe2b56d0c589b

この記事の、「pyenvでのpythonのバージョンがpython -vと違う時の対処法」で記載の方法で、上記の原因を解消できるはず。

実際は、PCを再起動したら解消した?

3)改めて(1)の手順を実行すると、正しく処理が反映された!!!