ConoHa VPSにUbuntu。仮想環境とDjangoの導入。

ConoHa VPSにPythonをインストール、仮想環境を作成し、Matplotlib、NumPy、Pillow、Djangoを入れます。サーバーのOSはUbuntu 20.04.1 LTS。Pythonは3.9.0、Djangoは3.1.2です。

1.Pythonの環境構築の注意事項

まず、UbuntuにPythonをインストールし仮想環境などを構築するには、以下の点を注意する必要があります。

Ubuntu には最初からPythonがインストールされており、そのまま利用可能です。

しかし、このPython は、 OS がさまざまな機能を提供するために使用しています。ユーザが勝手にパッケージを導入したりすると、 OS の安定性を損なうことも考えられますので、別途、あたらしいPythonをインストールするのが一般的です。

Ubuntu環境のPython (Python Japan)

2.Pythonの仮想環境

UbuntuへのPythonの仮想環境の構築について、pyenv、virtualenv、venv、pyenv-virtualenv、Anaconda、Pipenvなど、色々な方法があります。

好みによって分かれるところではあると思いますが、以下のPython Japanではvenvを使う方法が紹介されており、私もこの方法をそのまま適用することにしました。Python Japanの記事であれば安心できます。なお、venvはPython公式が提供する仮想環境マネージャです。

参考サイト:Ubuntu環境のPython(python Japan)

3.Pythonのインストール

インストールの方法はUbuntu環境のPythonに記載されていますので、詳しくはそちらを参照してください。ここでは、備忘録として簡単に手順を説明します。

(1) ビルドツール・ライブラリのインストール

pythonのソースコードをビルドするためのライブラリをインストールします。

以下のテキストを全て入力するのは大変です。コンソールにはCtrl+Vでは貼り付けられませんが、Tera Termを使用している場合には上部のツールバーから[編集]→[貼り付け(P)]でテキストを貼り付けられます。

なお、行末のバックスラッシュ(円マーク)は、長い行を複数行に記述するときに使う記号です。

$ sudo apt update
$ sudo apt install build-essential libbz2-dev libdb-dev \
  libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
  libncursesw5-dev libsqlite3-dev libssl-dev \
  zlib1g-dev uuid-dev tk-dev

(3) Pythonのインストール手順

Ubuntu環境のPythonに記載されてあるとおり、こちらのページ からソースコードをダウンロードし、次のコマンドで解凍してインストールします。

$ tar xJf Python-3.x.y.tar.xz  #ダウンロードしたファイルの解凍
$ cd Python-3.x.y
  #「3.x.y」の部分はバージョン番号です
$ ./configure
  #コンパイルするための準備
$ make
  #コンパイルの実行
$ sudo make install  #/usr/local/binにインストールされる

ダウンロードしたソースコードの圧縮ファイルや解凍したファイルは、一般ユーザーでログインした場合は「/home/ユーザー名/」にあり、インストール先は/usr/local/binです。

「./configure」の「.」はカレントディレクトリであることを示します。

インストール先を変える場合は「./configure」を「./configure --prefix=保存先」とします。

(4) 複数バージョンのインストール

主とするバージョンは「sudo make install」でしたが、それ以外のバージョンは「sudo make altinstall」とする。

  • python3、python3.x:主とするバージョンの起動
  • python3.x:主ではないバージョンの起動

(5) パッケージのインストールなど

パッケージのインストール、アップデート、削除の方法です。以下のコードはnumpyの例です。

「-m」は、OSとしてパスが通っているところだけではなく、Pythonとして設定したパス(sys.patで表示可能)も検索し、モジュールを実行します。pipはmオプションがなければ実行できません。

$ python3 -m pip install numpy  #numpyのインストール
$ python3 -m pip install -U numpy  #numpyのアップデート
$ python3 -m pip uninstall numpy  #numpyの削除

(6) インストール状況の確認

仮想環境で確認する場合と少し違います。1行目の「python3 -m」は仮想環境では必要ありません。また「python -V」では「python -V」も実行できます。

$ python3 -m pip list  #インストールされているパッケージの確認
$ python3 -V #python3のバージョン

以下、インストールする前の「python3 -m pip list」の実行結果です。仮想環境構築の前に最初からインストールされているパッケージです。

Package    Version
---------- -------
pip        20.2.3
setuptools 49.2.1

(3) 仮想環境には引き継がれない

なお、仮想環境に入る前にインストールしたパッケージは仮想環境に引き継がれません。

例えば、仮想環境に入る前にnumpyをインストールしたとしても、仮想環境でnumpyは使えませんので注意が必要です。

仮想環境でも最初にインストールされているのはpipとsetuptoolsのみです。

4.仮想環境の構築

仮想環境を作成する手順です。

(1) 仮想環境設定ファイルを作成

仮想環境で作業するディレクトリを作成します。以下のコードでは、1行目でディレクトリ「/home/ユーザー名/test_py」を作り、2行目で作成したディレクトリtest_pyに入り、3行目で仮想環境の設定ファイル「/home/ユーザー名/test_py/.venv_test/bin/activate」を作成します。

「.venv_test」は自由な名前に設定できますが、ディレクトリ名の最初は「.」にした方が設定ファイルが入ったディレクトリであることが明示できて使いやすいと思います。また、仮想環境に入ったときにコマンド プロンプトの先頭に表示されるので、長すぎると使いにくいです。

$ mkdir test_py  #ディレクトリの作成
$ cd test_py
$ python3 -m venv .venv_test  #仮想環境の設定ファイルを作成  

なお、複数のバージョンのpythonが入っている場合は以下のように指定するとPythonのバージョンを指定できます。

$ python3.7 -m venv .venv_test 

(2) 仮想環境への切り替え

仮想環境への切り替えは、先ほど作った仮想環境の設定ファイルをsourceで実行します。「source」コマンドは、ファイルに書かれたコマンドを現在のシェルで実行する、というコマンドです。

なお、「source」コマンドは「.」コマンドに置き換えられます。1行目と2行目の処理は同じです。

$ source .venv_test/bin/activate
$ . .venv_test/bin/activate

(3) 仮想環境でのパッケージのインストールなど

mtplotlibのインストール、アンインストール例です。「$」より後が入力部分です。仮想環境に入った状態でpipによりインストールすると、mtplotlibが仮想環境でのみ有効となります。

(.venv_test) $ python3 -m pip install mtplotlib  #インストール
(.venv_test) $ python3 -m pip install -U mtplotlib  #アップデート
(.venv_test) $ python3 -m pip uninstall mtplotlib  #削除

(4) 仮想環境でのインストール状況の確認

pip listにより、インストールしたパッケージの一覧が表示されます。「python -V」「python3 -V」によりPythonのバージョンが確認できます「- V」は大文字ですので注意して下さい。

$ pip list  #インストールされているパッケージの確認
$ python -V #pythonのバージョン
$ python3 -V #python3のバージョン

(5) 仮想環境の終了

$ deactivate

5. 仮想環境の共有

「pip freeze」によって仮想環境にインストールされたパッケージの一覧をrequirements.txtに書き出すことができ、新しい仮想環境を作成するときにpipによってrequirements.txtの内容のパッケージを全て一度にインストールすることができます。

「pip freeze」は仮想環境のコピーが目的なので「pip list」で表示されるpip、setuptoolsなどは表示されません。また、「pip list」に比べて表示が読みにくいです。

$ python3 -m pip freeze  #環境の一覧をディスプレイに表示
$ python3 -m pip freeze > requirements.txt  #環境の一覧をファイルに書き出し
$ python3 -m pip install -r requirements.txt  #書き出した環境を一度にインストール

2行目の実行により、カレントディレクトリにrequirements.txtが作成されます。

6.Matplotlib、NumPy、Pillowのインストール

Matplotlib、numpy、Pillowはよく使うパッケージですので、仮想環境で実際にインストールしてみます。なお、MatplotlibをインストールするとNumPy、Pillowも一緒にインストールされます。

では、まずは仮想環境に切り替えてください。

$ . .venv_test/bin/activate

次にインストールを実行しますが、実は以下のコードだけではインストールできませんでした。numpyの単独インストールはそのまま実行できますが、MatplotlibやPillowは本体をインストールする前に準備が必要なのです。

$ python3 -m pip install matplotlib

仮想環境のパッケージを確認するとpipとsetuptoolsのみインストールされています。

$ pip list
Package    Version
---------- -------
pip        20.2.3
setuptools 49.2.1

(1) pipの更新

まず、パッケージのバージョンなどの最新情報を得るためにpipを更新しておきましょう。Uオプションで更新できます。

$ python3 -m pip install -U pip

(2) wheelのインストール

matplotlib、Pillowをインストールするときにwheelというライブラリが必要とされました。wheelはwheel形式のパッケージをインストールするときに必要になることがあるようです。好みによるかもしれませんが、matplotlibをインストールするしないに関わらず最初にインストールしておいてもよいのではないでしょうか。

$ python3 -m pip install wheel

参考:Python パッケージングの標準を知ろう

(3) libjpeg-devのインストール

libjpegはjpeg関係のライブラリです。pythonのパッケージではなく、Ubuntuのライブラリです。

matplotlibやpillowを使わない人はインストールする必要はありません。

$ sudo apt install libjpeg-dev

(4) インストール実行

ここまで準備が終了すれば、matplotlibのインストール可能です。以下のコードを実行すればインストールできます。

なお、Pillowだけインストールしたい場合には「$ python3 -m pip install Pillow」とします。

$ python3 -m pip install matplotlib

以下、wheel、matplotlibインストール後のパッケージリストです。関連するパッケージが複数インストールされており、numpy、Pillowもインストールされています。

$ pip list
Package         Version
--------------- ---------
certifi         2020.6.20
cycler          0.10.0
kiwisolver      1.2.0
matplotlib      3.3.2
numpy           1.19.2
Pillow          7.2.0
pip             20.2.3
pyparsing       2.4.7
python-dateutil 2.8.1
setuptools      49.2.1
six             1.15.0
wheel           0.35.1

7.Djangoのインストール

最後に、Djangoをインストールしましょう。以下のコードの実行であっさりインストールできました。時間もそれほどかかりません。

$ python3 -m pip install django

以下、パッケージの一覧です「#●」の部分が新しくインストールされました。

$ pip list
Package         Version
--------------- ---------
asgiref         3.2.10
  #●
certifi         2020.6.20
cycler          0.10.0
Django          3.1.2
  #●
kiwisolver      1.2.0
matplotlib      3.3.2
numpy           1.19.2
Pillow          7.2.0
pip             20.2.3
pyparsing       2.4.7
python-dateutil 2.8.1
pytz            2020.1
  #●
setuptools      49.2.1
six             1.15.0
sqlparse        0.4.1
  #●
wheel           0.35.1

これで、Python、Matplotlib、NumPy、Pillow、Djangoのインストールが終了しました。

私が実際にレンタルしたVPSサーバー

私が実際にレンタルしたVPSサーバーはConoHa VPSです。私は1GBのプランを申し込みました。VPSサーバーは一般のレンタルサーバーと異なりOSやアプリケーションを自由に設定できるので、Pythonで計算した結果をサイトに表示したりすることもできます。

なお、ConoHa VPSの特長として、サーバーのディスクイメージを丸ごとバックアップできるイメージ保存機能を無料で使用することができます。コードを変更して元に戻せなくなった場合にも安心です。

また、ConoHa VPSは途中でプランをスケールアップできるだけでなく、スケールダウンすることもできます。つまり、2Gプランを1Gプランに変更することができます。ただし、512MBプランだけはスケールアップ・ダウン機能が使用できないので注意してください。

また、初期費用なしで3日だけ借り、3日分の費用だけ払うといったことも可能なので気軽に始められます。※時間課金(月の上限額は決まっています)



その他

Twitterへのリンクです。SNSもはじめました♪

以下、私が光回線を導入した時の記事一覧です。
 (1) 2020年「光回線は値段で選ぶ」では後悔する ←宅内工事の状況も説明しています。
 (2) NURO光の開通までWiFiルーターを格安レンタルできる
 (3) NURO光の屋外工事の状況をご紹介。その日に開通!
 (4) 光回線開通!実測するとNURO光はやっぱり速かった
 (5) ネット上のNURO光紹介特典は個人情報がもれないの?