バージョンについて(Django等) by xrsns.com

Wagtail Wiki

バージョンについて(Django等)

バージョンについて(Django等) xrsns.com

初回投稿日 2019-11-26 | 更新日 2020-02-03

ここではWagtailを構築するに当たって、
Python、Django、各ライブラリのバージョン関係に付いて考察して、
今使用している環境のバージョンを確認するところまで行います。

PythonとDjangoバージョンの関係性

バージョンについて(Django等) xrsns.com

概要としてPythonとDjangoの関係について説明します。

現在、Python 1を使ってる人は殆どいないと思うので、
Python 2とPython 3とDjangoに関して対応する関係性を説明します。
図の右側がDjangoのバージョン、左側が対応するPythonのバージョンです。

Python 2系統への対応は、Django 1.11(3年サポートのLTS、2020年4月まで)が最後となり、
Django 2.0でPython 3.4以降、Django 2.1でPython 3.5以降にのみの対応となりました。

因みにPython 3系統にはDjango 1.5で実験的に対応し、Django 1.6より本格的に対応したらしいです。

Wagtailを構築する際の各バージョン

WagtailとPython、Djangoの関係について説明します。

Wagtail 1.13以前は、Python 2.7およびDjango 1.xに対応しておりました。
現在のバージョンで対応表は下記の通りです。

Wagtailの対応バージョン

Django 2.0.x, 2.1.x and 2.2.x
Python 3.5, 3.6, 3.7 and 3.8

Django 2.0以上、Python 3.5以上に対応

PuputとPyMySQLの対応バージョンについて

Wagtailを使う際は、ライブラリのPyMySQLとPuputを入れるケースが多いです。

それぞれのライブラリは、
PyMySQLに関しては、MySQLを扱う際に必要になり、
PuputはWagtailをブログ形式にするのに必要になります。
要するに本番環境でブログ形式でWagtailを使うにはこの2つを入れる必要があります。

バージョンについて(Django等) xrsns.com

PyMySqlとPuput対応バージョン

PyMySql Django 2.2未満に対応
Puput  Django 2.1.6以上に対応

ここで注意すべきことは、2019年11月の時点では、
PyMySqlはDjango 2.2以上には残念ながら対応していません。
一方、PuputはDjango 2.1.6以上に対応してます。


上記の結果、それぞれ対応するバージョンが、
PyMySQL < Django 2.2
Puput >= Django 2.1.6なので
Django 2.1.6以上、Django 2.2未満が必須になります。

練習環境等でMySQLの代わりにSQLiteで使用する場合は、
PyMySQLの制限が外れるので、
Puput >= Django 2.1.6のみ注意すれば良いので、
その場合は、Django 2.1.6以上が必須になります。

結論をまとめると、各ライブラリを利用してWagtailを構築する際には下記の条件が必要になります。

MySQLを使って構築する場合
(Puputあり、PyMySQLあり)


Django 2.1.6以上、Django 2.2未満
Python 3.5以上

SQLiteを使って構築する場合
(Puputあり、PyMySQLなし)


Django 2.1.6以上
Python 3.5以上

尚、詳しい理由は他の章で述べますが、本番環境ではMySQLを使用されるのをお勧めします。

(対応バージョンは今後も変わる可能性が高いのでその場合は、各自調べて対応して下さい。)

(補足)PythonのMySQLドライバの種類

PyMySqlとmysqlclientについて

PyMySql
python2以上に対応、Django 2.2未満に対応

mysqlclient
python3以上に対応、Django 2.2にも対応
(但し、インストールでエラーが出る場合も多く報告されてる)

補足ですが、PythonのMySQLドライバには「PyMySql」以外にも様々な種類があり、
他に良く使用されてる「mysqlclient」というライブラリもあります。
今回「PyMySql」にした理由は、「mysqlclient」でインストールしようとするとエラーになるという報告が多数あり、
特にDjagno、Wagtail初心者には躓き易いポイントになる事を考慮して「PyMySql」にしました。

もしも、Djangoで普段は「mysqlclient」を使っている方やWagtailを「mysqlclient」を使って構築した経験がある場合は、
「mysqlclient」を使って頂いて構いません。その場合の対応バージョン等は各自調べて下さい。

PythonとDjangoバージョンを確認

上記を踏まえた上で今のバージョンを確認してみましょう。

現在のコマンドプロンプト内の表示例
(env) C:\Users\~\directoryA\myProject

今のバージョンを確認する前に必ず仮想化しておいて下さい。
仮想環境についてよくわからない場合は、 「Venvで仮想環境を作成する」 をご覧ください。
以下、注釈がない場合は先頭に(env)が付いてるものと仮定して進めて行きます。

$ python
>>> import django
>>> django.VERSION

$ python
Python 3.7.1 ~
>>> import django

ModuleNotFoundError: No module named 'django'

or

$ python
Python 3.7.1 ~
>>> import django
>>> django.VERSION
(2, 1, 8, 'final', 0)

コマンドプロンプトにコマンドを打ち込んで、PythonとDjangoのバージョンを確認して下さい。
バージョン確認が終わったらctrl+zを押してからenterを押すと解けます。


Djangoがまだ入ってない場合は、「ModuleNotFoundError: No module named 'django'」などと表示されます。
Djangoがまだ入ってない場合とバージョンが異なる場合は次のセクションで入れ直して下さい。

既に入っている場合は、Python 3.5以上で、Django 2.1.6以上、Django 2.2未満になっていれば問題ありません。

次回は仮想環境を構築した状態で必要なライブラリをインストールして行きます。

次の記事

ライブラリを入れる(Puput等)

Wagtailをブログ形式で使用する際に、必要となるライブラリを入れて行きます。

バージョンについて(Django等) xrsns.com