はじめに
以前、以下のCLIコマンドツールを作成しました。
GitHubにアップした後、Ubuntu Server をインストールした Rasberry Pi4 (以降、ラズパイと表記)と GitHub をSSH連携し、ラズパイ(サーバ)にデプロイしました。
この記事では、その処理結果について簡単にまとめていきます。
検証結果
VS Code上で実装したときと同じコマンドを実行したが、動作せず。
動作しなかった原因
1. .venv
ディレクトリがない
ls コマンドでディレクトリを確認したところ、venv ディレクトリだけ存在しないことがわかりました。
新たにプロジェクトのルートでディレクトリを作成しました。
2. python3 -m venv .venv
で仮想環境が作れない
python3 -m venv .venv
コマンドを実行した結果、以下のメッセージが出力されました。
The virtual environment was not created successfully because ensurepip is not
available. On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.
apt install python3.12-venv
You may need to use sudo with that command. After installing the python3-venv
package, recreate your virtual environment.
Failing command: /home/ubuntu/backend-portfolio/03_markdown_to_HTML_converter/.venv/bin/python3
このメッセージから2つのことが分かりました。
2-1. Python のバージョンに合わせた python3-venv パッケージをインストールする必要があること
Ubuntu や Debian 系では、Python の仮想環境機能(venv モジュール)が別パッケージで管理されており、デフォルトで入っていないことが多いことから、python3-venv パッケージを別途インストールする必要があるようです。
python3 --version
実行結果、Python 3.12.3 を使用しているとわかりました。
そのため、上記のメッセージで「apt install python3.12-venv」と出てきたと推測できます。
また、以下の記事も参考にさせていただきました。
https://noauto-nolife.com/post/ubuntu-2404-python-venv/
2-2. sudo コマンドを一緒に使ってインストールすること
apt install python3.12-venv
というコマンドと一緒に sudo
も使ってね、というメッセージですので、以下のコマンドを実行することになります。
sudo apt install python3.12-venv
これによって、venvモジュールが使えるようになりました。
ラズパイで環境構築
1. .venv の作成
python3 -m venv .venv
ディレクトリがあるか確認してみましょう。
焦ること勿れ。.
venv として作成していますので、隠しフォルダになっています。
そこで以下のコマンドを実行します。
しっかりあることが確認できます。
2. 仮想環境の有効化
(.venv)
がコマンドプロンプトに表示され、仮想環境が有効になりました。
3. pip install markdown
ここで、パッケージ管理 pip によって外部ライブラリ markdown をインストールしました。
仮装環境内で、必要なパッケージをインストールしています。
4. python3 file-converter.py markdown inputfile outputfile
無事、作成したプログラムが動作することが確認できました。
5. deactivate
コマンドプロンプトから (.venv)
の表示がなくなり、仮想環境を抜けて、グローバルなpython環境に戻りました。
再検証結果 : 成功!
まとめ
さぁ、実際の本番環境にプログラムを配置できたので、いざ実行確認。
あれ、できない?なぜだ?
そこから、VS Codeで作成したときの状態との差分を見つけ、一つ一つ謎を紐解いていった結果、無事プログラムが動作することが確認できました。
今回は簡易的なCLIコマンドラインツールを作り、処理もそこまで多くないのでうまくいっただけの可能性もあります。
プログラムの規模に応じて、適したサーバ環境を選択・構築できるよう、まだまだ進化していきたいと思います。
最後までお読みいただき、ありがとうございました。
参考URL