ConoHa VPSにPythonをインストール、仮想環境を作成し、Matplotlib、NumPy、Pillow、Djangoを入れます。サーバーのOSはUbuntu 20.04.1 LTS。Pythonは3.9.0、Djangoは3.1.2です。
0.VPSサーバーでDjangoを始めてみたシリーズ
この記事は「VPSサーバーでDjangoを始めてみたシリーズ」の記事です。一連の記事は、以下のリンク集を参照してください。
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に記載されてあるとおり、こちらのページ からソースコードをダウンロードし、「/home/ユーザー名/」にコピーします。そして、以下の手順で解凍、コンパイル、インストールを実行します。
$ 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/ユーザー名/Python-3.x.y/」に存在し、インストール先は/usr/local/binです。
「tar xJf」の「xJf」は解凍コマンド「tar」のオプションです。
- x:圧縮ファイルを展開する。
- J:xz形式のファイルを展開する。
- f:展開の対象をファイル名で指定する。
「./configure」の「.」はカレントディレクトリであることを示します。configureを実行することでOSやCPU等を調べ、環境に合わせてMakefileファイルを作成します。
「make」ではMakefileに基づきソースコードをコンパイルします。
「sudo make install」はコンパイルされたファイルを使ってインストールを実行します。
なお、インストール先を変える場合は「./configure」を「./configure --prefix=保存先」とします。
(4) 複数バージョンのインストール
主とするバージョンは「sudo make install」でしたが、それ以外のバージョンは「sudo make altinstall」とします。
主とするバージョンとそれ以外のバージョンは実行方法が異なり、使い分けることができます。実行方法は以下の通りです。
- python3:主とするバージョンの実行
- python3.x:主ではないバージョンの実行
ただし、python3.x.xという指定はできないようです。
(5) パッケージのインストール状況を確認
インストールしたPythonにおいて、パッケージのインストール状況やpythonのバージョンを確認する方法は以下の通りです。
$ python3 -m pip list #インストールされているパッケージの確認
$ python3 -V #python3のバージョンを確認
以下、パッケージインストール前の「python3 -m pip list」の実行結果です。pipとsetuptoolsが最初からインストールされています。
Package Version
---------- -------
pip 20.2.3
setuptools 49.2.1
(6) パッケージのインストールなど
パッケージのインストール、アップデート、削除の方法を説明します。
さて、パッケージをインストールする前には、まず、pip自身をアップデートしてください。
$ python3 -m pip install -U pip
以下のコードはnumpyの例です。なお、仮想環境の方にインストールしたい場合は、後述の手順により、仮想環境を構築した後にインストールして下さい。
「-m」は、OSとしてパスが通っているところだけではなく、Pythonとして設定したパス(sys.pathで表示可能)も検索し、モジュールを実行します。pipはmオプションがなければ実行できません。
$ python3 -m pip install numpy #numpyのインストール
$ python3 -m pip install numpy==1.24.3
#バージョンを指定してnumpyをインストール
$ python3 -m pip install -U numpy #numpyのアップデート
$ python3 -m pip uninstall numpy #numpyの削除
4.仮想環境の構築
仮想環境を構築する手順と、仮想環境を操作するための基本的なコマンドの使い方を紹介します。
(1) ベース環境は仮想環境に引き継がれない
ベース環境にインストールしたパッケージは仮想環境に引き継がれません。例えば、ベース環境にNumpyをインストールしていたとしても、仮想環境で使えるようにはなりません。
仮想環境で最初にインストールされているのはpipとsetuptoolsのみです。
また、pipのアップデートも引き継がれないので、仮想環境でインストールする前にpipのアップデートを忘れないようにしましょう。
(3) 仮想環境のディレクトリ構成
まず最初に、仮想環境のディレクトリ構成をどのようにするかを考えましょう。あまり、多くの仮想環境を作らないのであれば、以下のような構成でもよいと思います。階層が深くないので起動が楽です。
この記事の説明では以下の構成で説明します。
/home
│
└user_name #一般ユーザー名
│
├py1 #仮想環境実行用ディレクトリ-1
│ └.venv1 #仮想環境設定ファイル(仮想環境名)
└py2 #仮想環境実行用ディレクトリ-2
└.venv2 #仮想環境設定ファイル(仮想環境名)
また、多少、階層が深くなりますが以下のようなディレクトリ構成にすると仮想環境を[py_venvs]の中にまとめることができるので、すっきりします。
/home
│
└user_name #一般ユーザー名
│
└py_venvs #仮想環境を集めたディレクトリ
│
├py1 #仮想環境実行用ディレクトリ-1
│ └.venv1 #仮想環境設定ファイル(仮想環境名)
└py2 #仮想環境実行用ディレクトリ-2
└.venv2 #仮想環境設定ファイル(仮想環境名)
(2) 仮想環境の構築手順
仮想環境の構築手順を紹介します。以下のコードでは、1行目でディレクトリ「/home/ユーザー名/py1」を作り、2行目で作成したディレクトリpy1に入り、3行目で仮想環境の設定ファイルを作成します。仮想環境の設定ファイルは「/home/ユーザー名/py1/.venv1/」に保存されます。
「.venv1」は自由な名前に設定できますが、ディレクトリ名の最初は「.」にした方が設定用のディレクトリであることが明示できます。なお、この名前はコマンド プロンプトの先頭に表示されるので短い名前にしましょう。
$ mkdir py1 #ディレクトリの作成
$ cd py1
$ python3 -m venv .venv1 #仮想環境の設定ファイルを作成
複数のバージョンのpythonがインストールされている場合は以下のように指定するとPythonのバージョンを指定できます。
$ python3.7 -m venv .venv1
(3) 仮想環境への切り替え
仮想環境への切り替えは、先ほど作った仮想環境の設定ファイルのactivateをsourceで実行します。「source」コマンドは、ファイルに書かれたコマンドを現在のシェルで実行する、というコマンドです。
なお、「source」コマンドは「.」コマンドに置き換えられます。1行目と2行目の処理は同じです。
$ source .venv1/bin/activate
$ . .venv1/bin/activate
(4) 仮想環境へのパッケージのインストール等
mtplotlibやnumpyの具体的なインストールは後述しますので、ここではインストールの方法に目を通すだけにして下さい。
以下、mtplotlibのインストール、アンインストール例です。仮想環境に切り替えた状態でpipでインストールすると、仮想環境にインストールできます。インストール前にpipの更新を忘れないようにしましょう。
$ python3 -m pip install -U pip
$ python3 -m pip install mtplotlib #インストール
$ python3 -m pip install -U mtplotlib #アップデート
$ python3 -m pip uninstall mtplotlib #削除
(5) 仮想環境でのインストール状況の確認
pip listにより、インストールしたパッケージの一覧を表示できます。メイン環境と仮想環境ではパッケージの確認コマンドが少し違います。メイン環境では「python3 -m pip list」ですが、仮想環境では「pip list」です。
また、「python -V」「python3 -V」によりPythonのバージョンが確認できます「- V」は大文字です。
$ pip list #インストールされているパッケージの確認
$ python -V #pythonのバージョン
$ python3 -V #python3のバージョン
(6) 仮想環境の終了
deactivateで仮想環境を終了します。
$ deactivate
(7) 仮想環境の初期化、削除
仮想環境を初期状態に戻す方法は以下の通りです。
$ deactivate #仮想環境を起動している場合は終了する
$ cd py1
$ python3 -m venv --clear .venv1
仮想環境を削除するには、ディレクトリを削除するだけです。rオプションはディレクトリを中にあるファイルごと削除します。fオプションはエラーメッセージを表示しません。
$ deactivate #仮想環境を起動している場合は終了する
$ rm -rf py1
5. 仮想環境の状態をコピー
「pip freeze」を使えば、ある仮想環境の状態を他の仮想環境にコピーすることができます。
以下の例では、1行目のコマンドでpip freezeでパッケージの一覧をrequirements.txtに書き出せます。「>」はリダイレクトと呼ばれるもので、下の例ではpython3 -m 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) 仮想環境の構築
それでは、仮想環境について復習してみましょう。以下の手順で仮想環境が構築できます。
$ mkdir py_venvs
$ cd py_venvs
$ mkdir py1
$ cd py1
$ python3 -m venv .venv1 #仮想環境の設定ファイルを作成
以下のコマンドを実行すると「.venv1」が新しくできていることが分かります。
ls -a
(1) 仮想環境の起動とpipの更新
まずはインストール対象の仮想環境を起動します。
$ cd py1 #既にpy1の中に入っている場合は不要です。
$ . .venv1/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は最新バージョンではなく、少し古いバージョンを用いた方がトラブルは少ないと思います。anacondaなどのバージョンの構成を参考にするのも方法のひとつです。
$ python3 -m pip install matplotlib
なお、Python3.9.0を使いたい場合には、以下(3)~(5)の手順に従い、Matplotlibの前にwheelとlibjpeg-devをインストールします。
(3) wheelのインストール
wheelはwheel形式のパッケージをインストールするときに必要になることがあります。
では、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日分の費用だけ払うといったことも可能なので気軽に始められます。※時間課金(月の上限額は決まっています)
私からの友達紹介でクーポンをゲット
なお、以下のリンクから入ると、私からの友達紹介の扱いとなり1000円分のクーポンが支給されます。リンク先には「友達紹介」といった表記がないので「友達紹介」が適用されているのか不安になりますが大丈夫です。登録終了後にログインしたユーザーTop画面を確認すると支給されたクーポン1000円が表示されるはずです。
なお、友達紹介では個人情報が紹介者には開示されないので安心してご利用ください。
その他
液晶ペンタブレットを購入しました
(1) モバイルディスプレイを買うつもりだったのに激安ペンタブレット購入
以下、私が光回線を導入した時の記事一覧です。
(1) 2020年「光回線は値段で選ぶ」では後悔する ←宅内工事の状況も説明しています。
(2) NURO光の開通までWiFiルーターを格安レンタルできる
(3) NURO光の屋外工事の状況をご紹介。その日に開通!
(4) 光回線開通!実測するとNURO光はやっぱり速かった
(5) ネット上のNURO光紹介特典は個人情報がもれないの?