4

python 2.7.3 附带了一个 sqlite3 库,但它几乎不是最新版本。

我想在 virtualenv 环境中升级它。换句话说,升级只适用于这个 virtualenv 中安装的 python 版本。

这样做的正确方法是什么?

4

3 回答 3

4

以下对我有用,但如果有任何改进的余地,请发表评论:

  1. 激活要安装最新版本的 virtualenvsqlite3

  2. pysqlite从谷歌代码获取最新的包源:wget http://pysqlite.googlecode.com/files/pysqlite-2.6.3.tar.gz

  3. 从源代码编译pysqlite并与最新 sqlite的数据库一起编译:python setup.py build_static

  4. 将其安装到virtualenv的site-packages目录:python setup.py install

  5. 以上将实际安装pysqliteinto path-to-virtualenv/lib/python2.7/site-packages,这是所有其他 pip 安装的库所在的位置。

现在,我在 virtualenv 中安装了最新版本的sqlite(编译成),所以我可以这样做:pysqlitefrom pysqlite2 import dbapi2 as sqlite

于 2013-01-27T17:38:56.063 回答
4

我检查了这样的设置,有效:

export export LD_LIBRARY_PATH=$HOME/<your-sqlite-install-dir>/sqlite3/lib

我已将其添加到文件中的行export PATH旁边activate

PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
export LD_LIBRARY_PATH=$HOME/…/sqlite3/lib  # <- Here

可以通过以下两种方式之一进行检查。

virtualenv中的 Python 中,首先执行以下操作:

>>> import _sqlite3
>>> _sqlite3.__file__
'/usr/lib/…/_sqlite3.cpython-35m-i386-linux-gnu.so'

然后退出 Python 并ldd在返回的字符串上运行:

$ ldd /usr/lib/…/_sqlite3.cpython-35m-i386-linux-gnu.so
> …
> libsqlite3.so.0 => /home/…/sqlite3/lib/libsqlite3.so.0
> …

或者,再次使用来自virtualenv的 Python :

>>> import sqlite3
>>> sqlite3.sqlite_version
'3.21.0'  # Was 3.11.8 before
于 2017-12-24T18:58:51.283 回答
1

我曾经陷入同样的​​问题。这为我解决了它:

  1. 下载并解压所需的python版本
  2. mkdir 本地
  3. 下载软件包后解压 sqlite
  4. ./configure --prefix=/home/aanuj/local
  5. 制作
  6. 进行安装
  7. ./configure --prefix=/home/anauj/local LD​​FLAGS='-L/home/aaanuj/local/lib' CPPFLAGS='-I/home/aanuj/local/include'
  8. 制作
  9. 找到 sqlite3.so 并复制到 home/desired loc
  10. 提取海狸
  11. 使用所需的 python 版本设置虚拟环境
  12. 激活环境
  13. unalias python
  14. 导出 PYTHONPATH=/home/aanuj(_sqlite3.so 的位置)
  15. 享受
于 2013-07-02T05:08:46.967 回答