在Ubuntu上升级SQLite,并让Python使用新版SQLite
(本文适用于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的更多相关文章
- 如何删除 Ubuntu 上不再使用的旧内核
提问:过去我已经在我的Ubuntu上升级了几次内核.现在我想要删除这些旧的内核镜像来节省我的磁盘空间.如何用最简单的方法删除Ubuntu上先前版本的内核? 在Ubuntu上,有几个方法来升级内核.在U ...
- ubuntu上用eclipse搭建java、python开发环境
上一篇文章讲到如何在windwos上用eclipse搭建java.python开发环境,这一讲将关注如何在ubuntu上实现搭建,本人使用虚拟机安装的ubuntu系统,系统版本为:14.04 lts ...
- Ubuntu上如何安装Java,Eclipse,Pydev,Python(自带,不用装),BeautifulSoup
如何安装Java,如果出于编程的需要安装Java,需要安装的是JDK,而不仅仅是JRE,下面说说如何在Ubuntu下如何安装JDK:只有两步,1.下载并解压,2.配置环境变量1.下载并解压:下载地址: ...
- 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包 ...
- ubuntu上跑python连接pg,报错 ImportError: No module named psycopg2
ubuntu上跑python连接pg,报错 ImportError: No module named psycopg2 root@pgproxy1:~# python /home/zxw/PGWri ...
- 亲测可用的优雅的在已经安装了python的Ubuntu上安装python3.5
我的Ubuntu上已经安装了python2.7和3.4. 用以下方法可以方便的顺利的安装python3.5,使用的时候也不会发生冲突. 一条一条输入以下语句 wget https://www.pyth ...
- Ubuntu上mysql, 通过python连接报错Can't connect to MySQL server on xxx (10061)
通过sqlyog连接ubuntu上的mysql报错 试了试python直接连接也报同样的错 那应该就是ubuntu上mysql服务自己的问题了 查看mysql 版本 mysql -V root@clo ...
- [转]Ubuntu上的包管理:dpkg,apt和aptitude
一直以来对于ubuntu的包管理的概念就是apt-get,偶尔手动装个包就是dpkg -i,现在觉得是要系统地了解一下这几个包管理的命令. 原文转自: http://zhouliang.pro/201 ...
- 在 Ubuntu 上安装 TensorFlow (官方文档的翻译)
本指南介绍了如何在 Ubuntu 上安装 TensorFlow.这些指令也可能对其他 Linux 变体起作用, 但是我们只在Ubuntu 14.04 或更高版本上测试了(我们只支持) 这些指令. 一 ...
随机推荐
- java中构造代码块、方法调用顺序问题
1. 继承的概念 继承在本职上是特殊——一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法. 2. 继承中的初始化顺序 从类的结构上而言,其 ...
- 基于 debian 操作系统的 docker 镜像,安装 vim
基于 debian 操作系统的 docker 镜像,安装 vim,步骤: apt-get update apt-get install vim 注意: 直接运行步骤2,可能会报错: Reading p ...
- 一维信号频谱图仿真——matlab
程序1: %在MATLAB中是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当采样时间间隔足够小时,这些离散的采样值就能较好地近似出连续信号,matlab中连续信号的显示实际上还是离散信号的显 ...
- laravel学习资料
http://blog.csdn.net/qq_20873039/article/category/6246852 --laravel核心概念 /Eloquent ORM / laravel bl ...
- __unsafe_unretained的含义
OC的变量限定词的官方解释: __strong is the default. An object remains “alive” as long as there is a strong point ...
- configEnvironment()源码探究
该方法目的是对上面刚创建的环境对象进行相关配置,包含两步:配置属性源和配置活跃profiles. 其中配置属性源如下: 1.首先获取属性源 2.然后将默认属性源添加到属性源中 3.然后将命令行属性源添 ...
- 7.STM32中GPIO理解
端口概述 在STM32中,每个I/O端口可以由软件配置成为输入/输出模式.复位期间或刚复位后,I/O端口被配置成浮空输入模式.所有的GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时, 它们可以被激 ...
- 浏览器F12(开发者调试工具) 功能介绍
调试时使用最多的功能页面是:元素(ELements).控制台(Console).源代码(Sources).网络(Network)等. 元素(Elements):用于查看或修改HTML元素的属性.CSS ...
- 7.8 paint.c 程序
## 7.8 paint.c 程序 #include <stdio.h> #define COVERAGE 350 // 每罐尤其可刷的面积(单位:平方英尺) int main(void) ...
- HTML如何实现斜体字
HTML实现斜体字的标签为<i>标签,用来实现字体倾斜,写法如下: 字体斜体:<i>内容</i> 案例:正常 斜体 当文字加入i标签以后字体就会成为斜体