Python 3.7.2の仮想環境で、Djangoのpython manage.py startap myapp
を実行しようとすると、次のエラーが発生します。
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.8.2).
Ubuntu Trusty 14.04 Serverを実行しています。
Sqliteのバージョンを> = 3.8.3にアップグレードまたは更新するにはどうすればよいですか?
実行しました
$ apt list --installed | grep sqlite
libaprutil1-dbd-sqlite3/trusty,now 1.5.3-1 AMD64 [installed,automatic]
libdbd-sqlite3/trusty,now 0.9.0-2ubuntu2 AMD64 [installed]
libsqlite3-0/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 AMD64 [installed]
libsqlite3-dev/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 AMD64 [installed]
python-pysqlite2/trusty,now 2.6.3-3 AMD64 [installed]
python-pysqlite2-dbg/trusty,now 2.6.3-3 AMD64 [installed]
sqlite3/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 AMD64 [installed]
および
Sudo apt install --only-upgrade libsqlite3-0
Reading package lists... Done
Building dependency tree
Reading state information... Done
libsqlite3-0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 14 not upgraded.
編集:settings.py
は標準在庫です:
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
私はこれを経験しました。別の新しいバージョンのSQLiteをインストールする必要がありました。
https://www.sqlite.org/download.html
それは/ usr/local/binにあります。次に、Pythonを再コンパイルして、そこを見るように指示する必要がありました。
Sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
Sudo LD_RUN_PATH=/usr/local/lib make altinstall
SQLite Pythonが使用しているバージョンを確認するには:
$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13)
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
次の修正を適用しましたが、CentOS 7.xサーバーで機能しました。
編集/usr/lib64/python3.6/site-packages/Django/db/backends/sqlite3/base.py
ファイルは、以下の例のとおりです。
def check_sqlite_version():
# if Database.sqlite_version_info < (3, 8, 3):
# 2018-07-07, edit
if Database.sqlite_version_info < (3, 6, 3):
raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
上記の回答に加えて、Travis CIでこの動作が発生した場合に備えて、dist: xenial
ディレクティブを追加して修正します。
このエラーは、仮想環境が新しく更新されたsqlite3データベースに接続できなかったために発生します。そのためには、sqlite3データベースのバージョンを手動で更新してから、仮想環境へのパスを指定する必要があります。以下の手順に従ってください。
公式サイトから最新のsqlite3をダウンロードしてください。 ( https://www.sqlite.org/download.html )wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz
次に、そのフォルダーに移動してコマンドを実行します。 tar xvfz sqlite-autoconf-3070603.tar.gz
それぞれのフォルダに移動します。 cd sqlite-autoconf-3070603
./configure
make
make install
時間がかかりすぎる可能性がありますが、終了するまでお待ちください。時間がかかりすぎる場合は、そのプロセスを終了して、残りのステップを続けてください。
これで、更新されたsqlite3が正常にインストールされました。このコマンドを実行してくださいSudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
仮想環境のアクティブ化ファイル(例:venv/bin/activate)を開き、この行の先頭をファイルの先頭に追加します... export LD_LIBRARY_PATH="/usr/local/lib"
チェックのために、このコマンドをpython Shellに入力できます
$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13)
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
Python=を再コンパイルする必要がなく、virtualenvを使用する場合は、これを実行して、システム全体に影響を与えることなくセットアップできます(私はこれを行いました) Ubuntu 16の場合):
次のコマンドを実行します。
。/構成、設定
Sudo make install
ここで、virtualenvの起動に使用するアクティベートスクリプトを編集して、pythonが新しくインストールされたSQLiteの正しい場所を探すようにします。ファイルの先頭に次の行を追加するだけです。
lD_LIBRARY_PATH = "/ usr/local/lib"をエクスポートします
これで、アクティブなときDjango 2.2+はvirtualenvで正常に動作するはずです。お役に立てれば幸いです。