Django Webアプリ開発の学習(1)~買ったばかりの本、Spyderのインストールで躓いた

プログラミング PC
プログラミング

Djangoの本を買った理由

Django(ジャンゴ)の書籍を買った目的というか理由を簡単に記録しておく。自分のためにというのもある。

Python言語を少し練習してWebスクレイピングなんかが出来る様になったものの、しばらく学習する時間が取れなくて間が空いたらすっかり忘れてしまいました。やっぱりもっと間をつめて短時間でも継続的にPythonに触れていかないと身につく(忘れないレベルまで)には程遠いということを自覚しました。

そこで、スクレイピングよりももっと目標を高くして、Webアプリケーションを少しずつ作ってみようという気持ちになりました。言語はPythonを使いたいので(HTML、CSS、Javascriptsの併用は避けられない)かなりハードルは上がりますが、Djangoというフレームワークを学習してみようと考えました。

自分自身、プログラマーでは無いのでどこまでやるかは決めていませんが、ある程度雰囲気やら仕組みやらが理解出来るレベルまで進めたら良いかなと思っています。

「Django4 Webアプリ開発 実装ハンドブック」を購入しました。同じ様な目的でこの書籍を購入しようと思っている人もいるかも知れません。この書籍で使われる開発環境の概要として記しておくと、さわりは以下の様な感じになります。

  • この本での解説(開発環境)はAnacondaを使用
  • Anaconda Navigatorを使う(仮想環境の用意)
  • Spyderを使う(仮想環境内にインストール)
  • Djangoを使う

開発のための準備(インストール)でいきなり躓いた

AnacondaはJupyterNotebookの使用で既にWindowsパソコンにインストール済でした。この書籍を読んで仮想環境を使えるということを知りました。仮想環境内に必要なバージョンのPythonやモジュール的なものをインストールして開発環境を整えつつ、必要なツール(Spyderなど)もインストールするという事の様です。

仮想環境ごとに必要なツールをインストールするので、任意のバージョンを指定したりできますし、開発が終わったり、不要になった場合は仮想環境を削除してしまえば良いのでクリーンに保つことができます。

書籍の通り、Spyderをインストールして起動(ローンチ)すると、いきなりエラーに見舞われました。正直言って買ったばかりの書籍でこれは無いだろ!という気持ちになりました。書籍内の解説では何事もなく起動して簡単なコードを実行しています。

Spyderが実行出来ない原因(英語メッセージ)を手がかりに調べる

Traceback (most recent call last):
File “C:\Users\XXXXX.conda\envs\web_app\lib\site-packages\qtpy\QtWebEngineWidgets.py”, line 29, in
from PyQt5.QtWebEngineWidgets import QWebEnginePage
ModuleNotFoundError: No module named ‘PyQt5.QtWebEngineWidgets’
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File “C:\Users\XXXXX.conda\envs\web_app\Scripts\spyder-script.py”, line 10, in
sys.exit(main())
File “C:\Users\XXXXX.conda\envs\web_app\lib\site-packages\spyder\app\start.py”, line 233, in main
from spyder.app import mainwindow
File “C:\Users\XXXXX.conda\envs\web_app\lib\site-packages\spyder\app\mainwindow.py”, line 57, in
from qtpy import QtWebEngineWidgets # analysis:ignore
File “C:\Users\XXXXX.conda\envs\web_app\lib\site-packages\qtpy\QtWebEngineWidgets.py”, line 39, in
) from error
qtpy.QtModuleNotInstalledError: The QtWebEngineWidgets module was not found. It must be installed separately as PyQtWebEngine.

エラーメッセージよりコピペ引用

私自身、英語は苦手な方ですが頑張って読んでみると、QtWebEngineWidgets moduleが見つからんので、「PyQtWebEngine」をインストールする必要があるみたいなことの様です。さてどうやってインストールすれば良いのだろうか?

冷静に考えてみたら対処は簡単だった

「PyQtWebEngine」についてGoogleで検索してみると、どうやらPyQt側の変更がありモジュール?の構成が変わったため、Spyderの実行に必要な「PyQtWebEngine」がインストールされない様です。つまり私だけが躓く内容ではなさそうです。書籍の出版社HPのサポートページを確認しましたがサポート情報はありません。なんとか自力で解決するしか無さそうです。

ただ、Anaconda Navigatorを適当に弄っていると、ここから足りないパッケージをインストール出来るんじゃないかな?ということに気づきました。

フィルターを「All」に変更するとズラズラと出てきたので、pyqtで絞り込んでみたところ一番最後にpyqtwebengineが見つかりました。左端のチェックボックスをクリックするとインストール出来そうです。Applyをクリックしてインストールしました。

Spyderの起動OK

これでAnaconda NavigatorのHomeからSpyderを起動(Launch)してみると、無事に起動することが確認できました。いきなり躓いたので先行きが暗い感じでしたが、少し光が見えた感じでもあります。

なお、後にわかったことですが、足りないパッケージの追加インストールの方法は、Djangoをインストールする手順で解説されていました。よって、同じ様な状況に陥った場合はそのまま読み進めて行くと知識が入って自力解決できると思います。

SpyderのUIを日本語化

Spyderの起動が出来る様になり、日本語表示にして、サンプルを実行して期待通りの動作が確認できました。設定から変更できる事は書籍内に手順が記載されているので、きちんと読めば誰でも日本語メニュー化は出来ます。

まだまだ続きます

この書籍550ページ程ありますが、ここまででまだ44ページです。とりあえずこの辺りで中断するので記事もここまでです。先は長いですが少しずつチュートリアル的にこなしていけば、流れは理解出来る様になるかも知れません。

限られた時間でしか学習出来ないのでまとまった記事には出来ませんが、ぼちぼちやって行きながら記事に残してみようかなと思っています。なお購入を検討している方はKindle版だと半額以下なので個人的にはおすすめです。なぜかというとこの書籍はA5サイズと小さい装丁になっているので、文字が小さく挿絵も非常に見づらい(雰囲気しかわからない)です。それならPCの画面で1ページずつ読んでいった方がまだマシだと思います。購入時にサイズを確認しなかった自分の落ち度ですが、こんなに小さいとは思いませんでした・・

デュアルモニターや、タブレットで電子書籍を見ながら対応出来る人は電子書籍版を検討してみる価値はあると思います。電子書籍版の方が安いですし。タブレットの画面より面積が小さいんだもんなこの本・・

ハッキリ言ってAnacondaは重いので、PCのスペックが結構要求されます。遅いPCだと結構待たされる時間があってプチストレスです。Linux版ならどうかな?とDebianでやってみたところAnacondaがエラーを出すので、仕方なくUbuntuでやっています(Ubuntuなら大丈夫そうです)。同じPCでもWindowsに比べてUbuntuなら快適な速度でAnacondaが動いてくれるのでストレスも感じにくいです。

別の書籍も紹介しておく

もっとシンプルにDjangoの学習をすすめたいなら、より大きな紙面で見られる「Djangoのツボとコツがゼッタイにわかる本」がおすすめです(買いました)。こっちならもっと軽くサクサク動くDebianでも大丈夫そうです。少し古いMacでも大丈夫そうです。Djangoのバージョンは3.2で解説されていますが、開発環境はAnacondaを使わずもっと手軽でシンプルだからです。

第1版に比べると内容もかなり見直されているので第2版がおすすめです。

コメント

Comment spam is annoying.

There has been an increase in comment spam, but we decline it. It’s pointless because we use Akismet to block spam comments. Spam comments will not be posted.

コメントスパムが増えていますがお断りします。akismetでスパムコメントを弾いているので無意味です。スパムコメントは掲載されません。

タイトルとURLをコピーしました