使用sqlite3和IronPython 2.6在.Net4中的应用

5
我正在使用SharpDevelop 3.2.0,IronPython 2.6.1 for .Net4。要在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模块文件夹中没有名为_sqlite3的文件。
请告诉我在编译程序的版本中可能引起此问题的原因。
非常感谢。
2个回答

4

没有名为_sqlite3的文件;IronPython.Sqlite.dll提供了一个名为_sqlite3的模块。

如果您按照网站说明将IronPython.Sqlite.dll放入DLLs文件夹中,这可能是为什么在SharpDevelop下无法工作的原因。当运行ipy.exe时,它会隐式地添加对DLLs文件夹中任何DLL的引用。当SharpDevelop构建可执行文件时,它只是运行IronPython的一个小存根,它不知道任何已安装的IronPython版本,因此不会从DLLs文件夹加载任何内容。

最好修改您的主要脚本以包含:

import clr
clr.AddReference("IronPython.SQLite.dll")

然后确保IronPython.SQLite.dll与exe文件在同一目录中。这是我首选的选项,我应该有机会将其添加到说明中。


3

我已经预料到您会让我以某种方式参考DLL。

经过几次失败后,我成功地编译了程序,但包含DLL有点棘手。

  1. 我将DLL添加到SharpDevelop参考中。
  2. 我必须将以下代码添加到我的脚本中:

import sys import nt import clr sys.path.append(nt.getcwd()) clr.AddReferenceToFile('IronPython.SQLite.dll')

这是必要的,以指向我执行目录中的DLL。

非常感谢您的帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接