今までmac上でdocker環境を立ち上げてDjangoの学習をしていましたが、cloud9で行う記事を見てawsの勉強になるかもしれないと考えcloud9を試してみました。ただコードを書く前のmanage.pyの実行でエラーしてしまい解決するまで時間がかかったのでメモを残します。
環境 : aws cloud9のamazon linux2
$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
$ python manage.py startapp blog
Traceback (most recent call last):
File "manage.py", line 21, in <module>
・・・略・・・
raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17)
$ python -V
Python 3.7.9
$ sqlite3 --version
3.33.0 2020-08-14 13:23:32
バージョンは問題なさそう。
$ which sqlite3
/home/linuxbrew/.linuxbrew/bin/sqlite3
$ /usr/bin/sqlite3 --version
3.7.17 2013-05-20 00:56:22
コマンドラインからはlinuxbrew配下のsqlite3が見えているがpythonからは/usr/bin/sqlite3が見えている?
調べるとsqlite3が古いから最新版をインストールする記事が多かったが、その中で最新版インストール先のlibをLD_LIBRARY_PATHに設定するというの記事があったので真似してみた。
export LD_LIBRARY_PATH=/home/linuxbrew/.linuxbrew/lib:${LD_LIBRARY_PATH}
無事manage.pyの実行ができました。linuxbrewは知りませんでしたがhomebrewのlinux版
。LD_LIBRARY_PATHも設定しておくと良いと見つけた記事にありましたが、cloud9ではlinuxbrewはインストールされているがLD_LIBRARY_PATHは設定されていないようでした(.bashrcへの記述はなかった)。
### LD_LIBLARY_PATHを設定しないといけないのはなんとなくわかるが何で必要かよくわかっていない。
参考
https://qiita.com/rururu_kenken/items/8202b30b50e3bfa75821
https://qiita.com/thermes/items/926b478ff6e3758ecfea