RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作 Python VPS

(VPSでつくる) Python仮想環境venvの導入

投稿日:2021年5月5日 更新日:

連載第五回目です。

前回の4. Pythonのバージョンを3.Xにする記事で、Pythonのバージョン管理をディレクトリごとに行えるようになりました。

ただし、アプリごとにモジュールのバージョンは変えることができません。
特に、機械学習や統計学関係だとモジュールを変える必要がたまにあります。
そのため、今回はvenvを使って、アプリごとにモジュールの管理を行えるような環境を作りましょう。

この記事は、VPSで作るPythonでのWebアプリ運用環境の連載記事です。
その他については上記ページをお読みください。

1. 環境の確認

3. NginxでHello Worldで簡単に確認した内容を再確認します。
今回確認したいのは、Nginxの公開ディレクトリ関連のフォルダです。

パス 説明
/etc/nginx/ Nginxの設定ファイルが色々と入っている
/etc/nginx/nginx.conf Nginx設定ファイル
/var/log/nginx/ ログ保存ディレクトリ
/usr/share/nginx/html/ WEBサイトの公開ディレクトリ

なぜかというと、「アプリをどのディレクトリに入れて、どの仮想環境で実行するか」を系統立てて決めておいた方が後の管理が楽だからです。

今回構想しているディレクトリ構成は以下の通りです。

/usr/share/nginx
 ┗ app アプリ用ディレクトリ
 | ┗ アプリA
 | ┗ アプリB
 | ┗ アプリC
 ┗ venv 仮想環境用ディレクトリ
 | ┗ アプリA用環境
 | ┗ アプリB&C用環境
 ┗ html 静的ファイル設置用

そのため、以降は上記に従ってアプリAを動かせるようなアプリA用環境を作っていきます。
そのために、まずは基本的なディレクトリを作っておきます。

mkdir /usr/share/nginx/app
mkdir /usr/share/nginx/venv

2. venv環境の作成

まずは、アプリA用環境のためのディレクトリを作成します。

mkdir /usr/share/nginx/venv/app_a

下記コマンドで仮想環境を作成します。

python -m venv /usr/share/nginx/venv/app_a

※完了した表示は一切出ませんが、エラーが出なければ問題ないです。

3. venv環境の利用

venv環境をアクティブにします。

source /usr/share/nginx/venv/app_a/bin/activate

アクティブ化に成功すると、下記のように(環境名)[ログインユーザー名@ログイン場所 ディレクトリ名]が表示されます。

仮想環境を使うことで、その環境内でインストールしたPythonモジュールはその環境内でのみ有効となります。
どこまでがアプリA用の環境であるのか区分がはっきりするので非常に扱いやすくなります。

仮想環境内でpythonインタプリタを実行する場合は下記コマンドを使用します。

python

pythonファイルを実行する場合は下記コマンドを使用します。

python XXX.py

仮想環境を非アクティブ化するには下記コマンドを使用します。

deactivate

その他の詳細はvenv公式サイトをご覧ください。

おわりに

今回はvenvを使い、モジュールの管理を簡単にすることができました。
しかし、今の状態ではNginx(Webサーバー)上で動的なサイトを表示することはできません。
そのため、次回はNginx Unit(APサーバー)を用いて、簡単なPythonアプリを作成してWebサイトで公開してみましょう!

この記事は、VPSで作るPythonでのWebアプリ運用環境の連載記事です。
次は、6. Nginx Unit+venv+FlaskでHello Worldです。

-Web制作, Python, VPS

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

for内で選手個人データをSQLで呼び出すより、辞書型を利用した方が読み込みは早い

for内でSQLを呼び出すと遅い…。 自作野球ゲームMeisyoでは、明示的にデータを呼び出すためにfor内でSQLを利用していました。 CDs = {} # Cardデータ(選手id, 選手データ) …

「名将と呼ばれた者達」目標

目標 ・アクティブプレイヤー100人以上(2018年12月末) ・登録人数100人(2018年9月)→達成し次第サーバー変更(AWS?)#試合クソ重くてすみません!弱さーばなんです ・2018年8月公 …

Meisyo作者がサービスを作るにあたっての考え方

私は、以下の考え方に違和感を覚えている。 いかにそのサービスに、ゲームに集中、執着させるか。 ゲームであれば、毎日何時間も時間を使わせて、注目させて、お金を支払うように仕向けるべきである。 無課金ユー …

「実践!Chainerとロボットで学ぶディープラーニング」を作ってみた

実践!Chainerとロボットで学ぶディープラーニングを購入しました。 単純にロボを動かすのは楽しいです。 周りに意外と買った人が居ないようなので、レビューを書きました。 所感 ちょっとお高いけど、土 …

(VPSでつくる) 総括・変更履歴

長らくお疲れ様でした。 最後までご覧いただき誠にありがとうございました。 今回は、VPSの良い点、悪い点、引っかかりやすいポイントなどなど。 総括を行いたいと思います。 この記事は、VPSで作るPyt …