【问题标题】:How should I handle software packages?我应该如何处理软件包?
【发布时间】:2009-09-24 13:05:49
【问题描述】:

我正在尝试安装 pysqlite,但遇到了麻烦。我发现最可能的原因是缺少 sqlite 标头,我必须安装它们。我的平台:CentOS release 5.3 (Final)。我有 Python-2.6.2。

我还发现我需要 .rpm 文件。只要我有它们,我就会执行:

rpm -i sqlite3-devel-3.n.n.n.rpm

一切都会好起来的。

但是,我不知道在哪里可以找到 sqlite3-devel-3.n.n.n.rpm 文件。它应该已经在我的系统上吗?我无法使用“locate sqlite3-devel-3”找到它。我应该下载这个文件吗?如果是,我在哪里可以找到它,我应该使用哪个版本?我的意思是,.rpm 文件可能应该与我计算机上的 sqlite 版本一致?如果是这种情况,我怎样才能找到我的 sqlite 的版本?

如果我输入“from pysqlite2 import dbapi2 as sqlite”,我会得到:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pysqlite2

“yum search pysqlite”给了我以下信息:

Loaded plugins: fastestmirror
Excluding Packages in global exclude
list Finished
==== Matched: pysqlite ==== python-sqlite.x86_64 : Python bindings
for sqlite.

顺便说一下,我有以下目录: /home/myname/opt/lib/python2.6/sqlite3 我有以下文件:

dbapi2.py  dbapi2.pyc  dbapi2.pyo 
dump.py  dump.pyc  dump.pyo 
__init__.py  __init__.pyc  __init__.pyo  test

如果我输入“import unittest”,然后输入“import sqlite3 as sqlite”,我会得到:

Traceback (most recent call last):  
File "<stdin>", line 1, in <module>  
File "/home/myname/opt/lib/python2.6/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *   File "/home/myname/opt/lib/python2.6/sqlite3/dbapi2.py",
line 27, in <module>
    from _sqlite3 import * ImportError: No module named _sqlite3

提前谢谢你。

【问题讨论】:

    标签: python sqlite rpm pysqlite


    【解决方案1】:

    Python 2.6(和一些更早的版本)包含 sqlite Python org library ref,因此您不需要这样做。只需导入并运行

    【讨论】:

    • 如果我输入“from pysqlite2 import dbapi2 as sqlite”,我会得到: Traceback(最近一次调用最后一次):文件“”,第 1 行,在 中 ImportError:没有名为 pysqlite2 的模块
    • 使用 yum 搜索功能在您的 centos 存储库中搜索。 yum search pysqlite 我得到:python-sqlite.i386 1.1.7-1.2.1 installed Matched from: pysqlite.org 在我的系统中有一个名为 sqlite3 的模块
    • 当库包含在 Python 中时,它是用于 sqlite3 并重命名为 sqlite3 我怀疑你需要旧的 sqlite2
    • 但我也无法导入 sqlite3(我在主要问题中添加了一些细节)。
    • python 是如何安装的 - 我希望所有库等都在 /usr/ 或 /opt 而不是你的主目录中
    【解决方案2】:

    您可以使用 buildout 创建项目的本地化版本。这将安装所有必要的软件包,而无需 sudo 访问服务器。

    要试一试,请执行以下操作:

    mkdir tmp
    cd tmp
    wget http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
    python bootstrap.py init
    vim buildout.cfg
    

    编辑 buildout.cfg 并将其替换为以下内容:

    [buildout]
    parts = sqlite 
    
    [sqlite]
    recipe = zc.recipe.egg
    eggs = pysqlite
    interpreter = mypython
    

    现在,运行 ./bin/buildout 来重建项目。这将下载所有必要的包并为您创建一个新的解释器,您可以使用可以访问 sqlite 的测试。

    ./bin/buildout
    ./bin/mypython
    >>> import sqlite3
    

    这为您提供了一个可用于在其中进行开发的受控环境。 要了解有关 buildout 的更多信息,您可以在 Setuptools、Distutils 和 Buildout 上观看 pycon 2009 的视频。

    Eggs and Buildout Deployment in Python - Part 1

    Eggs and Buildout Deployment in Python - Part 2

    Eggs and Buildout Deployment in Python - Part 3

    祝你好运

    【讨论】:

      【解决方案3】:

      通常,您应该通过yum 安装python sqlite 模块,例如:

      yum install python-sqlite
      

      然后编辑您的代码,将 sqlite2 引用更改为 sqlite3

      顺便说一句,每当您阅读安装sqlite3-devel-3.n.n.n.rpm 的说明时,n 部分都不是字面意思;它们应该被替换为指定 rpm 包版本的数字。

      【讨论】:

      • 当我使用 yum "install python-sqlite" 我得到:你需要是 root 才能执行这个命令。我可以在没有 root 权限的情况下安装 sqlite 吗?
      • 一般情况下不会。因此,如果您可以在该机器上使用 sudo,您应该执行 sudo yum install python-sqlite 并输入您的密码,或者您应该让系统管理员为您执行此操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多