(本文适用于Debian系的Linux,如Ubuntu、Raspbian等等。)

在Linux上,Python的sqlite3模块使用系统自带的SQLite引擎,然而系统自带的SQLite可能版本太老了。

用sqlite3.sqlite_version看一下SQLite引擎的版本,查询得知这个版本是2012年6月发布的:

要升级SQLite引擎到新版、并被Python使用,需要如下两个步骤:

1、先下载、编译、安装SQLite引擎

到SQLite官网的下载页面:https://www.sqlite.org/download.html  这里是最新的版本,我们就安装它吧。

源码有两个文件,我们下第二个(sqlite-autoconf-3160200.tar.gz),因为这个有配置文件。复制其链接,然后在终端执行:

wget https://www.sqlite.org/2017/sqlite-autoconf-3160200.tar.gz
tar zxvf sqlite-autoconf-3160200.tar.gz
cd sqlite-autoconf- ./configure
make
sudo make install

以默认方式安装后,会把编译好的二进制文件安装到 /usr/local/lib, 把头文件sqlite3.h sqlite3ext.h安装到/usr/local/include。

用这两条命令确认一下已成功安装到这里:

ls -l /usr/local/lib/*sqlite*
ls -l /usr/local/include/*sqlite*

2、下载、编译、安装Python

请照此文的方法做: http://www.cnblogs.com/infopi/p/update_python_raspbian.html

唯一的区别是,在编译时略有不同。假设我们安装的是Python 3.5:

cd ./Python-3.5.3
./configure --prefix=/opt/python3.5
make
make
sudo make install

要改为:

cd ./Python-3.5.3
LD_RUN_PATH=/usr/local/lib ./configure LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" --prefix=/opt/python3.5
LD_RUN_PATH=/usr/local/lib make
make
sudo make install

蓝字是相比上面多出来的东西,表示Python要到那两个目录里去找SQLite。

没有蓝字的话,编译出来的Python仍将使用系统自带的SQLite。

照此安装后,已经可以使用最新版SQLite了,此版本是2017年1月发布的:

本文参考了Stackoverflow上tzot网友的方法,感谢~

万一万一,此文的方法不管用,可以尝试:
sudo apt-get remove sqlite3 libsqlite3-dev,删除系统自带的SQLite,之后再试一下。

在Ubuntu上升级SQLite,并让Python使用新版SQLite的更多相关文章

  1. 如何删除 Ubuntu 上不再使用的旧内核

    提问:过去我已经在我的Ubuntu上升级了几次内核.现在我想要删除这些旧的内核镜像来节省我的磁盘空间.如何用最简单的方法删除Ubuntu上先前版本的内核? 在Ubuntu上,有几个方法来升级内核.在U ...

  2. ubuntu上用eclipse搭建java、python开发环境

    上一篇文章讲到如何在windwos上用eclipse搭建java.python开发环境,这一讲将关注如何在ubuntu上实现搭建,本人使用虚拟机安装的ubuntu系统,系统版本为:14.04 lts ...

  3. Ubuntu上如何安装Java,Eclipse,Pydev,Python(自带,不用装),BeautifulSoup

    如何安装Java,如果出于编程的需要安装Java,需要安装的是JDK,而不仅仅是JRE,下面说说如何在Ubuntu下如何安装JDK:只有两步,1.下载并解压,2.配置环境变量1.下载并解压:下载地址: ...

  4. RHEL6.4上升级python从2.6.6到2.7.3

    RHEL6.4上升级python从2.6.6到2.7.3 原始安装好的redhat6.4上的python版本是2.6.6,不能满足实际需要.升级的方法很多,从源码升级或者从rpm包升级.其中从rpm包 ...

  5. ubuntu上跑python连接pg,报错 ImportError: No module named psycopg2

    ubuntu上跑python连接pg,报错  ImportError: No module named psycopg2 root@pgproxy1:~# python /home/zxw/PGWri ...

  6. 亲测可用的优雅的在已经安装了python的Ubuntu上安装python3.5

    我的Ubuntu上已经安装了python2.7和3.4. 用以下方法可以方便的顺利的安装python3.5,使用的时候也不会发生冲突. 一条一条输入以下语句 wget https://www.pyth ...

  7. Ubuntu上mysql, 通过python连接报错Can't connect to MySQL server on xxx (10061)

    通过sqlyog连接ubuntu上的mysql报错 试了试python直接连接也报同样的错 那应该就是ubuntu上mysql服务自己的问题了 查看mysql 版本 mysql -V root@clo ...

  8. [转]Ubuntu上的包管理:dpkg,apt和aptitude

    一直以来对于ubuntu的包管理的概念就是apt-get,偶尔手动装个包就是dpkg -i,现在觉得是要系统地了解一下这几个包管理的命令. 原文转自: http://zhouliang.pro/201 ...

  9. 在 Ubuntu 上安装 TensorFlow (官方文档的翻译)

    本指南介绍了如何在 Ubuntu 上安装 TensorFlow.这些指令也可能对其他 Linux 变体起作用, 但是我们只在Ubuntu 14.04 或更高版本上测试了(我们只支持)  这些指令. 一 ...

随机推荐

  1. Windows Server 2008 R2 /2012 修改密码策略

    今天建了域环境,在添加新用户的时候,发现用简单的密码时域安全策略提示密码复杂度不够,于是我就想在域安全策略里面把密码复杂度降低一点. 问题:    在“管理工具 >> 本地安全策略 > ...

  2. 浅谈SPI总线

    SPI总线概述     SPI全称是串行外设接口(Serial Peripheral Interface),是由Motorola提出的一种全双工同步串行通信接口,通信波特率可以高达5Mbps,但具体速 ...

  3. qt5程序打包含qml

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行. 因此 Qt 官方开发环境里自带了一 ...

  4. dubbo 用来做什么

    1.各个独立app之间的通信问题怎么解决? 2.怎么做到统一调度.协调处理. 3.如果计费模块是并发最大的模块,但是其他模块并发不是很大.则需要对计费进行负载均衡,怎么实现?

  5. 廖雪峰Java8JUnit单元测试-2使用JUnit-4超时测试

    1.超时测试 可以为JUnit的单个测试设置超时: 超时设置1秒:@Test(timeout=1000),单位为毫秒 2.示例 Leibniz定理:PI/4= 1 - 1/3 + 1/5 - 1/7 ...

  6. 阿里云ssl负载均衡证书配置

    https://www.chinassl.net/ssl_install/n683.html

  7. 继承LinearLayout自定义左侧菜单

    public class LeftMenuView extends LinearLayout { LinkedHashMap<Integer,String> map=new LinkedH ...

  8. django 三种缓存模式的使用及注意点

    Django 缓存模式的使用(主要针对RestFul设计模式的项目) 有三种模式: 全站使用缓存模式(整个项目每个接口都会使用缓存,缺点:所以接口都无法实时性获取数据) 单独视图缓存模式(单个接口使用 ...

  9. Java 基于WebMagic 开发的网络爬虫

    第一次接触爬虫,之所以选择WebMagic,是因为文档齐全.用法简单.而且框架一直在维护. WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,我们可以快速开发出一个高效.易维护的 ...

  10. 【JsonView工具】谷歌浏览器中安装JsonView扩展程序

    接口测试过程中,有时候要查看接口返回的数据(比如Get接口),为了更方便的查看,发现这个插件挺好用的. 实际开发工作中经常用到json数据,那么就会有这样一个需求:在谷歌浏览器中访问URL地址返回的j ...