🎉

【Django】【エラー】manage.pyを実行できなくなった

に公開

ローカルで作成したDjango のアプリEC2 (Amazon Linux2) にデプロイしたところ、

manage.py が実行できなくなりました....

エラーの内容

[testuser@ip-×××-××-××-×× django_practice]$ python manage.py runserver
  File "manage.py", line 19
    ) from exc
         ^
SyntaxError: invalid syntax

SyntaxError(文法エラー)出てますが、manage.py なんていじってないけどな......

原因

どうやら、Python2 系で実行していたのがよくない。(らしい)

とりあえず、Python のバージョンを調べました

[testuser@ip-×××-××-××-×× ~]$ python -V
Python 2.7.18
[testuser@ip-×××-××-××-×× ~]$ python3 -V
Python 3.7.10

つまり、Amazon Linux2  の場合は、デフォルトで

python   →  python2 系

python3 →  python3 系

なので、↓ のコマンドはpython2 系で実行されます。

python manage.py runserver

対応策

python3 系で実行します

(実行コマンド)

python3 manage.py runserver

(実行結果)

[testuser@ip-×××-××-××-×× django_practice]$ python3 manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
November 03, 2022 - 23:52:11
Django version 4.0.6
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Django 起動できましたーー

python2 系を使用しないあなたへ

python3 系のみを利用するなら、エイリアスを設定することをオススメします

エイリアスを設定すると、

python → python3 系 で実行できるようになります。

ついでにpip コマンドのエイリアスも設定しておきましょう

(実行コマンド)

echo 'alias python=python3' >> ~/.bashrc
echo 'alias pip=pip3' >> ~/.bashrc
source ~/.bashrc
python -V
pip --version

(実行結果)

[ec2-user@ip-×××-××-××-×× ~]$ echo 'alias python=python3' >> ~/.bashrc
[ec2-user@ip-×××-××-××-×× ~]$ echo 'alias pip=pip3' >> ~/.bashrc
[ec2-user@ip-×××-××-××-×× ~]$ source ~/.bashrc
[ec2-user@ip-×××-××-××-×× ~]$ python -V
Python 3.7.10
[ec2-user@ip-×××-××-××-×× ~]$ pip --version
pip 20.2.2 from /usr/lib/python3.7/site-packages/pip (python 3.7)

これでpython コマンドや pip コマンドが python3 系で実行できるようになったので、 ↓ のコマンドで Django を実行できます。

[testuser@ip-×××-××-××-×× django_practice]# python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
November 04, 2022 - 00:09:19
Django version 4.0.6
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ちなみに、python2 系は python2 コマンドで実行できます

[testuser@ip-×××-××-××-×× ~]$ python2 -V
Python 2.7.18

参考文献

https://jimaru.blog/programming/python/manage-py-invalid-syntax/

https://teratail.com/questions/138440

Discussion