Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

asyncがらみのSyntaxErrorの解決とPython バージョンアップデート

前回、djangoでサーバサイドの実装を一通り完成させました。
elsammit-beginnerblg.hatenablog.com

次にフロントサイドを作ってみようと思い進めてみたところ、はまった部分があったため備忘録として残します。

今回実施したいことは、フロントサイドでは、あるデータを収集してjsonデータにしてサーバサイドに送信するのみでした。
そして、あるデータ収集~jsonデータに加工まではサンプルで実現出来ていました。

このため、サンプルを実行してサーバに送信するだけの簡単な内容の予定だったのですが、そのサンプルが一筋縄では動かせなかった。。。泣

発生現象

サンプルはpythonだったため実行してみたところ、

async def ~~
SyntaxError: invalid syntax

というエラーが発生し、うまく動かず。

原因

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バージョンアップはやりたくない。。。ので止めておきました!!