How to upgrade sqlite 3.8.2 to >= 3.8.3

前端 未结 5 1202
我寻月下人不归
我寻月下人不归 2020-12-15 09:48

In a virtual Env with Python 3.7.2, I am trying to run django\'s python manage.py startap myapp and I get this error:

raise ImproperlyConfigured         


        
相关标签:
5条回答
  • 2020-12-15 10:23

    If you don't want to recompile Python and you're going to be using a virtualenv, you can do this to set it up without affecting the system as a whole (I've done this with Ubuntu 16):

    1. Download SQLite tarball from https://www.sqlite.org/download.html
    2. Extract the contents and cd into the folder.
    3. Run the following commands:

      ./configure

      sudo make install

    4. Now you need to edit the activate script used to start the virtualenv so that python looks in the right place for the newly installed SQLite. Simply add the following line at the top of the file:

      export LD_LIBRARY_PATH="/usr/local/lib"

    Now, when active, Django 2.2+ should work fine in the virtualenv. Hope that helps.

    0 讨论(0)
  • 2020-12-15 10:25

    I've just been through this. I had to install a separate newer version of SQLite, from

    https://www.sqlite.org/download.html

    That is in /usr/local/bin. Then I had to recompile Python, telling it to look there:

    sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
    sudo LD_RUN_PATH=/usr/local/lib make altinstall
    

    To check which version of SQLite Python is using:

    $ python
    Python 3.7.3 (default, Apr 12 2019, 16:23:13) 
    >>> import sqlite3
    >>> sqlite3.sqlite_version
    '3.27.2'
    
    0 讨论(0)
  • 2020-12-15 10:29

    I have applied the following fix and it worked for my CentOS 7.x server.

    Edit /usr/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py file as per the below example:

    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)
    
    0 讨论(0)
  • 2020-12-15 10:36

    In addition to the above mentioned answers, just in case if you experience this behaviour on Travis CI, add dist: xenial directive to fix it.

    0 讨论(0)
  • 2020-12-15 10:40

    This error comes because your virtual environment could not connect to newly updated sqlite3 database. For that you have to update your sqlite3 database version manually and then give path of it to your virtual environment. Kindly follow below steps:

    1. Download latest sqlite3 from official site. (https://www.sqlite.org/download.html)wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz

    2. Then go to that folder and fire command. tar xvfz sqlite-autoconf-3070603.tar.gz

    3. Go to respective folder. cd sqlite-autoconf-3070603

    4. ./configure

    5. make

    6. make install It may take too time but wait till end. If it's take too much then terminate that process and continue rest of steps.

    7. Now you successfully install updated sqlite3. Now fire this command sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations

    8. Open your activate file of virtual environment (e.g., venv/bin/activate) and add this line top of the file... export LD_LIBRARY_PATH="/usr/local/lib"

    9. Now for checking you can type this commands to your python shell

    $ python
    Python 3.7.3 (default, Apr 12 2019, 16:23:13) 
    >>> import sqlite3
    >>> sqlite3.sqlite_version
    '3.27.2'
    
    0 讨论(0)
提交回复
热议问题