h05torです。
私はpythonanywhereでFlaskを使ってwebページをデプロイしていますが、訳あって複垢を作ることにしました。
アカウント自体はIDで管理されていて、電話番号などの個人情報の登録は不要であるため、一人でいくつでも複垢持つことができます。
無料会員だと1サイトしか作れませんのでpythonanywhereで複数のサイトを持つのであればこの方法でOKです。
とりあえず元のアカウントで作っているサイトのコピーサイトを立ち上げるためにpythonファイル、htmlファイル、その他諸々のファイルを全く同じに配置して必要なライブラリを追加でインストールしてみました。
pythonのバージョンは3.9まで選べるようになっていましたが、元のサイトは3.8でしたので、コピーサイトということで敢えて3.8を選びました。(当時は3.8までしかありませんでした。)
で、それでちゃんと立ち上がったのかというと・・・・・
はい、エラー画面でました。
完全に全部コピーしたのに何故?と思い、エラーログ確認したところ、
いやいや、flask_sessionstore(captcha導入に必要なライブラリ)ちゃんとインストールしたわ。それに前に書いた備忘録記事見ながらやったからどこが違うんや。(自分のブログを参考にするスタイル)
もちろん「Bash console」からpip3 listのコマンドでインストール済みのライブラリ確認したところ入っておりました。
というわけで原因不明となったわけですが、カンでpip3.8 installで再度ライブラリを入れてみたところ・・・・
あれ?なんか知らんけどこのエラーに関しては解決しました。
推測ではありますが、pip3 installだとpythonanywhereに実装されている最新版のバージョンにライブラリがインストールされているのだと思います。
今回、pythonのバージョンが3.8で立ち上げましたがpythonanywhereに実装されている最新版のpythonが3.9であるため、3.9としてインストールされてしまい、3.8にはライブラリが入っていない状態だったのだと思われます。
で、このエラーに関してはと書いた通り、まだ終わりではありません。
一応これでログイン機能も通過できるようになり、各ページにも行けるようになったので外見的には完成したと思われたのですが・・・
次はファイルダウンロード機能でエラーになりました。
ここもpythonファイルそのままコピーしてるから何故なのか・・・
原因はFlaskのバージョンが変わっていたため、ある関数の引数名が変更されていたことが原因でした。
元のアカウントでのFlaskのバージョンは1.1.1でしたが複垢でのFlaskはバージョンが2.0.0と新しいものになっていました。
前のアカウント立ち上げたのが前年の5月ぐらいだったと思いますので1年でここら辺も変わっているみたいですね。
ちなみにその変更か必要となった箇所ですが、ファイルダウンロードに使う「send_from_directory」の引数でファイル名を指定する部分がfilename→pathに変更となっていました。
って、これ2月に記事で上げたばっかりですね。修正しなきゃ。
というわけでこれでなんとかコピーサイトが完成しました。
1年でこれだけ色々と変わるのですから、仮にpythonをはじめプログラマーを本業にするのであれば日々の情報収集と新しい技術の勉強は欠かせませんね。
エンジニアは勉強が苦手な人には向いていないというのはこういうことであるとなんとなく実感できたと思いました。
※ちなみに私は趣味でやっているだけで本業はメーカー(中小企業)の研究開発職なのでITエンジニアではないです