【python3系】pythonanywhereにライブラリを追加する
h05torです。
仕事で使っている計算ツールをwebページとして使うため、pythonanywhereというサービスを使用しております。
pythonanywhere自体、デフォルトでもある程度ライブラリが搭載されおり、FlaskとかDjangoといったwebフレームワークの骨格部分はもちろん、matplotlibやnumpy、scikit-learnといった計算系・機械学習系のpythonならではのライブラリも入っています。
それでも、あれこれ学習しているうちに、あんなことやこんなこともやりたい的に新しい機能を付けたくなり、そのためにデフォルトでは入っていないライブラリが必要になる場合もあるかと思います。
というわけで、今回はpythonanywhereにライブラリを追加ということの備忘録を書いていこうと思います。
まず、ライブラリをインストールするにはpythonanywhereのコマンドに行く必要があります。
コマンドは「Console」から「Bash console」を押すと開きます。
↓
はい、まさにコマンドって感じの黒い画面が開きました。
ここでpip3 listと入力して、現在入っているライブラリとバージョンを確認できます。
↓
えっ?pip3?pipじゃないのって感じですが、どうやら私のところだと確か初期設定のときにpython3.8を選択したのでpython3系のはずなのですが、pipだけだとpython2系で入っているものが表示されるみたいです。
ここからが本番で、ライブラリのインストールです。
ローカル環境であればanacondaプロンプト等を開いてライブラリをいれたい仮想環境をアクティブにしてpip install (ライブラリ名)とすればよいのですが、
pythonanywhereで、python3系にライブラリをインストールする際は
pip3 install --user (ライブラリ名)
を入力し実行します。 ↓
さきほどのライブラリの確認で述べたため察した方もいると思いますが、
pipではなくpip3です。
これ実はつい最近やからしておりまして、pip install --user (ライブラリ名)でやったところ、確かにインストール成功と表示されたのですが、python2系の方に入っておりまして、モジュールの方でimportして作ったサイトを表示しようとしたらエラー画面が出ました。
で、エラーログ確認したら
「そんなモジュール見つかんねーよ」と。
前の方の話に戻りますが、pip listでライブラリ確認してもちゃんとあったのでおかしいなと思ってネットで調べたところpython3系に入ってないんじゃないんすか?pip3じゃないとpython3系に入りませんよ(原文英語)的な情報があったのでpip3 listで確認したら入っていませんでした。
という経緯がありましたので、pip3 install --user flask_session_captchaで再度インストールしたところ無事にサイトが表示されました。
もうひとつ重要なのはpip3 install とライブラリ名の間に「--user」を入れ忘れないように。
--user入れずにインストールしようとしたら途中まで上手く行っているように見せかけて最後にエラーします。
pythonanywhereはデフォルトのライブラリが入った大元の環境?があって、それぞれのユーザーに仮想環境を割り振っているようで、大元の環境は当然ながらユーザーは勝手にいじることはできませんので、--userを入れる必要があるんだと思います。
------------------------------------------------------------------------------------
pythonanywhereで立ち上げているFlaskページのログイン画面にcaptchaを追加しようと思い、そのためのライブラリを入れようとする際に色々とやらかしたので今後の参考のための備忘録としてここまで書きました。
次あたりに、そのFlaskにcaptcha導入する際の備忘録も書くかも?