使用virtualenv创建虚拟环境下No module named _sqlite3报错
python版本:3.6.0
django版本:2.0.4
Ubuntu系统
在《Python编程:从入门到实践》这本书最后一个Web项目中的例子, 使用virtualenv创建虚拟环境,然后在Django中创建项目:
1 | django-admin.py startproject learning_log . |
创建了一个learning_log的项目,然后创建数据库:
1 | python manage.py migrate |
报错:No module named ‘_sqlite3’
查找网上资料,在虚拟环境下安装libsqlite3-dev
1 | sudo apt-get install libsqlite3-dev |
然后重新下载Python 3.6.0的源码,重新编译
1 | tar -xvf Python-3.6.0.tar.xz |
我的方法来源:
https://stackoverflow.com/questions/1210664/no-module-named-sqlite3
https://stackoverflow.com/questions/10784132/django-no-module-named-sqlite3
网上找的资料基本到这里就可以了,再在python中导入sqlite3就可以成功了。但是我的依然没有:
这让我困惑了好久。。重新编译Python,重启电脑,还是No module named _sqlite3
过了几个小时。。。
在博客园看到的这篇文章终于搞明白了:http://www.cnblogs.com/itflycat/p/4461897.html
上面的安装和编译过程都没有问题,,问题出现在了pyenv创造的虚拟环境learning_log_env,在这个虚拟环境下我的python版本是3.6.0,而退出这个虚拟环境pyenv deactivate
后,我的python安装的版本也是3.6.0,但是这两个是不同环境下的,我把两个搞混了,之前编译的一直都是退出learning_log_env这个环境编译的python,而我需要重新编译的是进入虚拟环境下的这个版本的Python,sqlite3也是装在虚拟环境里的
明白问题出在哪里就好办了:
1 | # 先退出virtualenv的python环境 |
发现使用pyenv下载安装的非常慢,可以用这个方法:http://huanyouchen.github.io/2018/04/29/pyenv-install-python-very-slow/
把虚拟环境下python重新安装一遍,再次import sqlite3
就不会报错了