スクリプトのお勉強 技術

CentOS7 + Django2.2でSQlite3を使用する方法

投稿日:

そのままだとエラーになる

素のCentOS7で、SQLite3を使用して、Djangoアプリを起動すると以下のエラーになります。

File "/opt/webapps/django_upload/.venv/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 63, in check_sqlite_version
  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).

対処(1) SQLite3のソースからコンパイルする。

SQLite3のソースを持ってきてコンパイルし、/usr/local/libにインストールして、そのライブラリを見るようにする方法です。

ソースに関しては、snapshotを持ってきてしまいましたが、本来は以下のような感じがいいようです。

https://www.sqlite.org/2019/sqlite-amalgamation-3280000.zip

具体的な手順は以下です。

$ wget https://www.sqlite.org/snapshot/sqlite-snapshot-201906171413.tar.gz
$ tar xvfz sqlite-snapshot-201906171413.tar.gz
$ cd sqlite-snapshot-201906171413
### /usr/local以下にインストール
$ ./configure --prefix=/usr/local ; make
$ sudo make install
### sqlite ライブラリを参照するように追加
$ sudo echo "/usr/local/lib" >> /etc/ld.so.conf.d/sqlite.conf
$ sudo ldconfig
### 確認
$ /usr/local/bin/pipenv run python manage.py shell
Python 3.6.8 (default, Apr 25 2019, 21:02:35)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.6.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import sqlite3

In [2]: sqlite3.sqlite_version
Out[2]: '3.29.0'

対処(2) 。。。

と書きたかったのですが、現状だと上記が一番簡単なようです。

おわりに

これようのRPMでも作ったほうがいいかな。。fpmだと一発で作れそうですが。

-スクリプトのお勉強, 技術

執筆者:

関連記事

Python3/ある日付から日付までの月/日/時間ごとの時刻を算出する

小ネタです。 要するに、時刻A と 時刻B を指定したときの、各時間間隔での時刻取得したかったです。 当初はdateutilを使う方法でなく、自前で実装しようと思ったのですが、面倒なことに気づきました …

整形/文法チェック ツール インストールまとめ

1.はじめに 最近、仕事で複数スクリプトを組み合わせてコーディングすることが多くなりました。 それだと、各スクリプトの癖を忘れたり、そもそもどう書くのか忘れたりと、不良を作りこむ可能性が多くなります。 …

Pythonパッケージ管理の歴史

歴史っても、あまり過去に興味がないので、、 Pythonのパッケージ管理の歴史は、常に流動的で、そもそもからして、とてもじゃないがまとめて説明できるようなものではないです。 はっきり言って昔からよく分 …

Nuxt.jsのFormで入力/確認/完了フォームを作成してみた(その2)

前回の記事の続きです。以下について書いていきます。この記事で終わりのはず? バリデーション機能(主にIPアドレスのバリデーション追加)画面 バリデーション機能 バリデーション機能は、vee-valid …

Pythonでコマンド非同期起動

はじめに 小ネタです。 作成するプログラムの要件で、コマンドを起動して、そのコマンドが「継続」している/していないことを確認する、という要件があります。 具体的には、pingコマンドを普通に打つと、コ …