ローカルで作成したDjangoのアプリをEC2 (Amazon Linux2) にデプロイしたところ、
manage.pyが実行できなくなりました….
エラーの内容
1 2 3 4 5 |
[testuser@ip-×××-××-××-×× django_practice]$ python manage.py runserver File "manage.py", line 19 ) from exc ^ SyntaxError: invalid syntax |
SyntaxError(文法エラー)出てますが、manage.pyなんていじってないけどな……
原因
どうやら、Python2系で実行していたのがよくない。(らしい)
理由はよくわかっていないですが。
とりあえず、Pythonのバージョンを調べました
1 2 3 4 |
[testuser@ip-×××-××-××-×× ~]$ python -V Python 2.7.18 [testuser@ip-×××-××-××-×× ~]$ python3 -V Python 3.7.10 |
つまり、Amazon Linux2 の場合は、デフォルトで
python → python2系
python3 → python3系
となっているみたいです。
なので、↓のコマンドはpython2系で実行されます。
1 |
python manage.py runserver |
対応策
python3系で実行します
(実行コマンド)
1 |
python3 manage.py runserver |
(実行結果)
1 2 3 4 5 6 7 8 |
[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コマンドのエイリアスも設定しておきましょう
(実行コマンド)
1 2 3 4 5 |
echo 'alias python=python3' >> ~/.bashrc echo 'alias pip=pip3' >> ~/.bashrc source ~/.bashrc python -V pip --version |
(実行結果)
1 2 3 4 5 6 7 |
[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を実行できます。
1 2 3 4 5 6 7 8 |
[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コマンドで実行できます
1 2 |
[testuser@ip-×××-××-××-×× ~]$ python2 -V Python 2.7.18 |
参考文献
python manage.pyでinvalid syntaxと言われた原因
Django: runserverするときにSyntax Errorが発生します。
#前提
Djangoで開発されている方のGithub repositoryからcloud9上にcloneして、マークアップ言語をいじろうとしています。
#問題
最初に`python mana
コメント