🎉
【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
参考文献
Discussion