- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
一些背景:我们有一个用 Python 3 编写的代码库,它使用 Pyramid 和 SqlAlchemy ORM 来持久化到 mysql 数据库。要使用 ORM 为我们的类编写测试,我们使用的是 Sqlite。所有这些都可以很好地协同工作……在本地。
设置我们的 Jenkins (Ubuntu) 服务器来运行测试套件,在 virtualenv 中,我们遇到了一个问题。测试是这样执行的:
coverage run --source src/ --omit=src/tests/ -m py.test
不涉及 ORM 的测试没问题。那些使用 ORM 的人会抛出这个错误:
____________________________________________________________ TestSGenre.test_get_all_success _____________________________________________________________
self = <tests.common.orm.models.test_s_genre.TestSGenre testMethod=test_get_all_by_discipline_success>
def setUp(self):
DBSession.remove()
> self.engine = setup()
source/src/tests/common/orm/models/test_s_genre.py:13:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
source/src/tests/common/orm/orm_setup.py:7: in setup
engine = create_engine('sqlite://', connect_args={'check_same_thread': False}, poolclass=StaticPool)
/var/www/hosts/company/virtualenv/swapenv/lib/python3.4/site-packages/sqlalchemy/engine/__init__.py:386: in create_engine
return strategy.create(*args, **kwargs)
/var/www/hosts/company/virtualenv/swapenv/lib/python3.4/site-packages/sqlalchemy/engine/strategies.py:74: in create
dbapi = dialect_cls.dbapi(**dbapi_args)
/var/www/hosts/company/virtualenv/swapenv/lib/python3.4/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py:339: in dbapi
raise e
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite'>
@classmethod
def dbapi(cls):
try:
> from pysqlite2 import dbapi2 as sqlite
E ImportError: No module named 'pysqlite2'
/var/www/hosts/company/virtualenv/swapenv/lib/python3.4/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py:334: ImportError
检查 sqlite3(从 virtualenv 内部)成功:
(swapenv)user@jenkins:/var/lib/jenkins/workspace/SWAP_Unit_Test$ which sqlite3
/usr/bin/sqlite3
在virtualenv之外也是成功的。我们已经尝试安装和重新安装所有数量的 sqlite 包、sqlite-dev 等。据说 Sqlite 库是 Python 3 的一部分,但是为什么在运行测试时找不到它?
最佳答案
您缺少 sqlite3 Python 模块,您可以通过以下方式验证:
bin/python -c 'import sqlite3'
which sqlite3
命令仅显示您安装了 sqlite3
命令行工具;这不是 Python 使用的。它使用 libsqlite3
共享库(命令行工具也使用它)。如果缺少,则表示在构建 Python 时 Python 无法找到 SQLite 开发 header 。
在 Ubuntu 上,您需要安装 libsqlite3-dev
来获取这些 header 。
您可能缺少其他依赖项;在 Ubuntu 上我会安装:
libreadline6-dev
libbz2-dev
libssl-dev
libsqlite3-dev
libncursesw5-dev
libffi-dev
libdb-dev
libexpat1-dev
zlib1g-dev
liblzma-dev
libgdbm-dev
libmpdec-dev
其中一些是加速器包; Python 可以在没有它们的情况下工作,但某些模块会变慢(例如,没有 mpdecimal
library 的 decimal
)。
您可能想要验证 Ubuntu Python 3.4 source package dependencies适用于您的 Ubuntu 版本。
关于python-3.x - 导入错误 : No module named 'pysqlite2' when running tests in Python 3 Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29022473/
我使用的是 OSX 10.6,最近将 Python 从 2.6 升级到了 2.7,因此我必须升级 python 软件包。 这次我决定使用brew,并使用brew安装了sqlite、libspatial
在我的 Mac 上安装 sqlite 时,当它尝试创建 pysqlite2-doc 目录时,我的权限被拒绝。有什么想法吗? 最佳答案 您使用的 Mac OSX 和 Python 的确切版本是什么?所有
我需要将图像文件保存到 python 中的 sqlite 数据库中。我找不到解决办法。我该怎么做? 提前致谢。 最佳答案 写入 - cursor.execute('插入文件 (id, name, bi
我正在使用 pysqlite 制作一个程序来处理一些数据。对多个表和列中的相似字段进行相同的操作,所以我想我可以将sql语句参数化如下: def foo(): column = 'c' tab
我尝试安装 pysqlite。安装过程中开始出现一些可疑的东西。为什么我输入: python setup.py build 最后我得到了如下信息: src/module.c:286: error: ‘
我正在使用 pysqlite 构建和搜索关键字数据库以及与每个关键字对应的 URL 集。我的数据库搜索策略使用 1 个关键字效果很好,因为它只需要 SQL 语句中的 1 个 WHERE 子句。类似于:
我有一个带有内部数据库连接的对象,该连接在其整个生命周期内都处于事件状态。在程序运行结束时,必须提交并关闭连接。到目前为止,我使用了显式的 close 方法,但这有点麻烦,尤其是当调用代码中可能发生异
Gang,我开始使用 pySQLite,我正在尝试找到一个示例来说明如何在插入新记录(如果数据库中尚不存在)之前查询数据库中的现有记录。我觉得我忽略了一个非常基本的功能。 谢谢! 最佳答案 创建表时使
我想要 Python 和 sqlite 之间有一个接口(interface)。两者都安装在机器上。我有旧版本的 Python (2.4.3)。因此,默认情况下不包含 pysqlite。首先,我尝试通过
我认为我是个笨蛋,也许没有导入正确的包,但是当我导入时...... from pysqlite2 import dbapi2 as sqlite import types import re impo
使用 pysqlite 如何将用户定义类型用作比较中的值,例如。 g:“... WHERE 列名称 > 用户类型”? 例如,我定义了一个具有必要注册、转换器等的 bool 类型。Pysqlite/Sq
我使用的是 pysqlite,默认情况下,它不启用事务性 DDL(尽管 DDL 是来自 sqlite3 客户端的事务性)。 如何在 pysqlite 中启用事务 DDL? 最佳答案 pysqlite
是否有一些简单的方法或如何将 sqlite 数据库集成到 gtk.TreeModel (TreeView) 中? 我想要的是在 treeview 中显示来自 db 的数据,当我更改 db 中的某些内容
我正在使用 pysqlite 与 SQLite 数据库对话,我想知道检查 UPDATE SQL 语句是否真的成功更新某些内容的正确方法是什么一张 table 。 在 pysqlite 中执行此操作后是
美好的一天。 我在 Windows 上编译 pysqlite 时遇到问题。我已经设法开始编译了很多工作,但现在我遇到了这个错误: d:/mingw/bin/../lib/gcc/mingw32/4.7
我希望用户能够选择显示哪些订单结果,例如按年龄),我不想在从数据库中获取它们后对它们进行排序。 显然,如果用户能够指定影响 SQL 命令的输入,则需要对其进行清理,我通常会使用参数化,但 pysqli
我创建了 virtualenv: mkvirtualenv -p /usr/bin/python3.4 django 之后,我尝试安装 pysqlite: pip install pysqlite 但
Lion 升级后,我不得不重新安装我的 python 包,并在安装 PIL 和 pysqlite 时遇到问题。 ... unable to execute gcc-4.2: No such file
在 pysqlite 中,违反 NOT NULL 或 UNIQUE 约束同样会引发 IntegrityError。遗憾的是,此 Exception 类型不提供错误代码,而仅提供一条消息。 所以,假设我
pip install pysqlite失败,并输出以下错误日志: ➜ ~ pip install pysqlite Collecting pysqlite Using cached pysq
我是一名优秀的程序员,十分优秀!