asyncがらみのSyntaxErrorの解決とPython バージョンアップデート
前回、djangoでサーバサイドの実装を一通り完成させました。
elsammit-beginnerblg.hatenablog.com
次にフロントサイドを作ってみようと思い進めてみたところ、はまった部分があったため備忘録として残します。
今回実施したいことは、フロントサイドでは、あるデータを収集してjsonデータにしてサーバサイドに送信するのみでした。
そして、あるデータ収集~jsonデータに加工まではサンプルで実現出来ていました。
このため、サンプルを実行してサーバに送信するだけの簡単な内容の予定だったのですが、そのサンプルが一筋縄では動かせなかった。。。泣
原因
python3.4~python3.5にかけてasync、awaitの使い方に変化があった模様。
で、pythonのバージョンが合っていなかった場合、同様のエラーが発生するようだった。
www.it-swarm.dev
自分が使用していたpythonバージョンは3.4であったため、発生してしまっていた。
対策
pythonのバージョンを3.4から3.5以上にバージョンアップをする。
pythonアップデート手順
前置きが長くなってしまいました!!
アップデートを行うにあたり、こちらを参考にしました。
qiita.com
まずpyenvが必要になるため、
sudo apt install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev git clone https://github.com/yyuu/pyenv.git ~/.pyenv
を実行してpyenvをダウンロード。
次に実行できるようにパスを通す。
sudo vi ~/.bash_profile ※.bash_profileに下記を追記. export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
これでpyenvが導入できました。
pyenvコマンドでpythonをインストールするのですが、
pyenv install --list
により、インストール可能なpythonバージョン一覧が確認できます。
今回はpython3.6.0のインストールを行うこととしたため、
pyenv install 3.6.0 pyenv global 3.6.0
を実行!!
successが出たことを確認してから、
python -V
を実行し、3.6.0になったことを確認。
これでpythonバージョンを3.4⇒3.6に変更できました。
効果確認
pythonバージョンを3.6に変更できたのでサンプルを実行!!
結果、エラーなく動作させることができました!! やったね!!
最後に
実はpython3.7.0にバージョンアップさせようかと思っていたのですが、エラーが発生したためやむなく3.6.0に変更しました。
pyenvで3.7.0にアップデートしようとするとエラーが発生するようで、調べると解決策が載っていました。
ただし、カーネルバージョンを上げなければならないようで、そこまではやりたくなったためpythonのバージョンを3.6.0に変更しました。
結構躓いたけど、勉強になりました!!!
実際にサーバサイド(django)にjsonデータを送信しようとしたところでもちょっと躓いたところがあったため、
備忘録で残したいと思います。
python3.7.0へのアップデート
python3.7.0へアップデートしようとしたところ、エラーが発生。
pyenv install 3.7.0 ~~~ The bug is not reproducible, so it is likely a hardware or OS problem
解決策を調べたところ、こちらの記事を発見!!
takuocean.hatenablog.com
apt-get upgrade
だけ行ってみましたが、エラー解消できず。。。
Kernelバージョンアップはやりたくない。。。ので止めておきました!!