Hay una biblioteca sqlite3 que viene con python 2.7.3, pero no es la última versión.
Me gustaría actualizarlo dentro de un entorno virtualenv. En otras palabras, la actualización solo se aplica a la versión de Python instalada dentro de este virtualenv.
¿Cuál es la forma correcta de hacerlo?
Lo siguiente funciona para mí, pero por favor comente si hay algún margen de mejora:
Active el virtualenv en el que va a instalar el último sqlite3
Obtenga la última fuente del paquete pysqlite
de google code: wget http://pysqlite.googlecode.com/files/pysqlite-2.6.3.tar.gz
Compile pysqlite
desde la fuente y junto con la última base de datos sqlite
: python setup.py build_static
Instálelo en el directorio de paquetes de sitio de virtualenv: python setup.py install
Lo anterior instalará realmente el pysqlite
en los pysqlite
path-to-virtualenv/lib/python2.7/site-packages
, que es donde están todas las demás bibliotecas instaladas en pip.
Ahora, tengo la última versión de sqlite
(comstackda en pysqlite
) instalada dentro de un virtualenv, así que puedo hacer: from pysqlite2 import dbapi2 as sqlite
Estuve atrapado en el mismo problema una vez. Esto lo resolvió para mí:
He comprobado configurar algo como esto, funciona:
export export LD_LIBRARY_PATH=$HOME//sqlite3/lib
Lo he agregado junto a la línea de export PATH
en el archivo de activate
:
PATH="$VIRTUAL_ENV/bin:$PATH" export PATH export LD_LIBRARY_PATH=$HOME/…/sqlite3/lib # <- Here
Uno puede comprobarlo de una de dos maneras.
Desde Python en el virtualenv , primero haz:
>>> import _sqlite3 >>> _sqlite3.__file__ '/usr/lib/…/_sqlite3.cpython-35m-i386-linux-gnu.so'
Luego salga de Python y ejecute ldd
en la cadena devuelta:
$ ldd /usr/lib/…/_sqlite3.cpython-35m-i386-linux-gnu.so > … > libsqlite3.so.0 => /home/…/sqlite3/lib/libsqlite3.so.0 > …
O alternativamente, otra vez en Python desde el virtualenv :
>>> import sqlite3 >>> sqlite3.sqlite_version '3.21.0' # Was 3.11.8 before