超初心者が生成AIの力を借りながら、pythonを学習していくコーナーの備忘メモです。
本投稿のテーマは「lolipopのサーバー上でpythonスクリプトを実行する方法」ですが、まずはその背景から説明をします。
Google Colaboratoryでは403エラーとなるAPIにアクセスするため
もともとのpythonの開発環境はGoogle Colaboratoryを利用しています。
ひとつのUIの中で完結するため、実行→修正のサイクルを回しやすいからです。
しかしながら、今回初めての問題となったのが、こちらの三菱UFJアセットマネジメントの投信情報APIです。
このAPIを利用して、eMaxis slimシリーズの分析をしたいと考えて取り組んだのですが、何度トライをしても403エラーが帰ってきてしまいます。アクセス権限がないというタイプのエラー。
仕様書を読み込んでもWebで検索をしてもアクセスキーや認証は必要ないとのこと。生成AIに聞いても解決できない。うーん、これは、公式に問い合わせをするしかないか、でも、正月休みだしなぁ、と思っていたところで参考になったのが、こちらの記事でした。
GASだとエラーになるけど、pythonだと問題ない、という旨が記載されています。
これを読んで、「もしかしたら、Google Colabだからダメなのかな?」と思いあたりました。
cronで定期設定しているlolipopサーバー上で手動でpythonを実行する方法を探す
もともと、lolipopサーバー上では、cronを設定して、pythonスクリプトを定期実行している状態です。2023年の年末休みでそこまではやり切ったものの、そもそも「サーバー」なんてものに疎いタイプなので、記憶を頼りに、当時参考にしていた先達のWebサイトを探します。
レンタルサーバーでPythonを動かす!lolipopを使った手順とポイント
あった、これこれ。分かりやすくて助かります。
このサイトの説明に沿って、windowsのコマンドプロンプトを使ってサーバーにアクセスするところまではやりながら思い出しました。
ただし、どうやって、コマンドプロンプトからpyファイルを手動で実行させるかの記載がありません。
ここで行き詰まっていましたが、生成AIを使いながら問答を繰り返すなかでようやく回答にたどり着きました。
コマンドプロンプトからサーバー上のpyファイルを実行する方法
コマンドプロンプトからサーバー上のpyファイルを実行するためには、pyファイルが保存されているディレクトリー(フォルダ階層)まで行ったうえで、実行コマンドを入力する必要があります。
pyファイルが保存されているディレクトリーにたどり着く
このステップに苦労しましたが、私がコマンドプロンプトでlolipopサーバーにsshでアクセスをすると、最初はいわゆるrootディレクトリーにいたようです。
一方で、lolipopのFTPサイトでpyファイルをアップロードをする際には、rootディレクトリー直下にpythonフォルダを作成し、その中にpyファイルを保存していたつもりでした。
ただ、実際には、FTPサイトでアクセスをしていたのは、root直下のwebというディレクトリーだったのです。
つまり、
- root/python/pyファイル、だと思っていたけれど、
- root/web/python/pyファイル、が正しい現実でした。
よって、コマンドプロンプトでサーバーにアクセスしたあとに下記のコマンドを打ち込むことでpythonフォルダに移動できました。
cd web/python
pyファイルの実行コマンド
pyファイルは、下記のコマンドを落ち込むことで実行できます。
python3 <ファイル名>.py
三菱UFJアセットマネジメント投信情報APIへの403エラーの解消
なお、背景に記載をしていた投信情報APIへのアクセスはサーバーからpythonスクリプトを実行することで実現することができました。
同じ悩みを持っている誰かの解決の参考になれば幸いです。