我正在使用适用于 .Net4 的 SharpDevelop 3.2.0、IronPython 2.6.1。
要使用此模块访问 IronPython 的 sqlite3 功能: IronPython.SQLite
我的程序是一个 GUI 应用程序并访问一个 sqlite 数据库。当通过 IronPython 的 ipy.exe 解释器启动程序时,一切(包括数据库访问)都运行得非常完美。
但是如果我尝试将我用 SharpDevelop 编译的程序启动为可执行文件,我会得到异常:
IronPython.Runtime.Exceptions.ImportException: No module named _sqlite3
出现这个异常的原因位于dbapi2.py中:
from _sqlite3 import *
在 IronPython 控制台上,我可以导入 _sqlite3 并按预期使用它。
我已经为 SharpDevelop 提供了 sqlite3 模块的路径,但是在 IronPython 或 sqlite3-module 文件夹中的任何地方都没有名为 _sqlite3 的文件。
请告诉我在构建我的程序的编译版本时可能导致此问题的原因。
非常感谢。
最佳答案
任何地方都没有_sqlite3
文件; IronPython.Sqlite.dll 提供了一个名为 _sqlite3
的模块。
如果您按照网站说明将 IronPython.Sqlite.dll 放入 DLLs 文件夹,这可能就是它在 SharpDevelop 下无法运行的原因。运行 ipy.exe 时,它会隐式添加对 DLLs 文件夹中任何 DLL 的引用。当 SharpDevelop 构建可执行文件时,它是一个运行 IronPython 的小 stub ,但它不知道任何已安装的 IronPython 版本,因此不会从 DLL 文件夹加载任何内容。
最好是修改主脚本以包含
import clr
clr.AddReference("IronPython.SQLite.dll")
然后确保 IronPython.SQLite.dll 与 exe 位于同一目录中。无论如何,这是我的首选,我应该在有机会时将其添加到说明中。
关于sqlite - 将 sqlite3 与 IronPython 2.6 一起用于 .Net4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513981/