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:主ではないバージョンの実行

(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) インストール状況の確認

メイン環境でのインストール状況の確認方法は以下の通りです。

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

以下、パッケージインストール前の「python3 -m pip list」の実行結果です。pipとsetuptoolsが最初からインストールされています。

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

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

ベース環境にインストールしたパッケージは仮想環境に引き継がれません。例えば、ベース環境にNumpyをインストールしていたとしても、仮想環境で使えるようにはなりません。

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

また、pipのアップデートも引き継がれないので、仮想環境でインストールする前にpipのアップデートを忘れないようにしましょう。

4.仮想環境の構築

仮想環境を構築する手順と、仮想環境を操作するための基本的なコマンドの使い方を紹介します。

(1) 仮想環境の構築手順

仮想環境の構築手順を紹介します。以下のコードでは、1行目でディレクトリ「/home/ユーザー名/test_py」を作り、2行目で作成したディレクトリtest_pyに入り、3行目で仮想環境の設定ファイルを作成します。仮想環境の設定ファイルは「/home/ユーザー名/test_py/.venv_test/」に保存されます。

「.venv_test」は自由な名前に設定できますが、ディレクトリ名の最初は「.」にした方が設定用のディレクトリであることが明示できます。

また、この名前はコマンド プロンプトの先頭に表示されるので短い名前にしましょう。

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

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

$ python3.7 -m venv .venv_test 

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

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

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

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

(3) 仮想環境へのパッケージのインストール等

mtplotlibのインストール、アンインストール例です。仮想環境に切り替えた状態でpipでインストールすると、仮想環境にインストールできます。

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

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

pip listにより、インストールしたパッケージの一覧を表示できます。メイン環境と仮想環境ではパッケージの確認コマンドが少し違います。メイン環境では「python3 -m pip list」ですが、仮想環境では「pip list」です。

また、「python -V」「python3 -V」によりPythonのバージョンが確認できます「- V」は大文字です。

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

(5) 仮想環境の終了

deactivateで仮想環境を終了します。

$ deactivate

5. 仮想環境の状態をコピー

「pip freeze」を使えば、ある仮想環境の状態を他の仮想環境にコピーすることができます。

以下の例では、1行目のコマンドでpip freezeでパッケージの一覧をrequirements.txtに書き出せます。2行目の「-r」オプションではrequirements.txtの内容を新しい仮想環境にインストールできます。

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

なお、「pip freeze」は仮想環境のコピーが目的のコマンドなので、「pip list」の方が読みやすいです。

$ python3 -m pip freeze  #環境の一覧をディスプレイに表示

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

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

(1) 仮想環境の起動とpipの更新

まずはインストール対象の仮想環境を起動します。

$ . .venv_test/bin/activate

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

$ python3 -m pip install -U pip

(2) Matplotlibのインストール

以下のコマンドの実行でMatplotlibをインストールが可能ですが、Python3.9.0ではインストールできませんでした。これは、2020/10/26の時点ではpipが新しいPython3.9.0に対応できていないことが原因だと考えられます。また、MatplotlibだけではなくPillowもインストールできませんでした。

このようにPythonは最新バージョンではなく、少し古いバージョンを用いた方がトラブルは少ないと思います。

$ python3 -m pip install matplotlib

なお、Python3.9.0を使いたい場合には、以下(3)~(5)の手順に従い、Matplotlibの前にwheelとlibjpeg-devをインストールします。

(3) wheelのインストール

wheelはwheel形式のパッケージをインストールするときに必要になることがあります。

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

では、wheelのインストール前に仮想環境のパッケージ一覧を調べておきましょう。現在はpipとsetuptoolsだけがインストールされていることが分かります。

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

以下のコマンドでwheelをインストールします。

$ python3 -m pip install wheel

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

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

$ sudo apt install libjpeg-dev

(5) 改めてmatplotlibのインストール

ここまで準備が終了すれば、matplotlibのインストール可能です。改めてインストールを実行してみましょう。

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

$ python3 -m pip install 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

以下、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光紹介特典は個人情報がもれないの?