使用sqlite3和IronPython 2.6 for .Net4

时间:2010-08-18 15:51:02

标签: sqlite ironpython sharpdevelop

我正在使用SharpDevelop 3.2.0,IronPython 2.6.1 for .Net4。

使用此模块为IronPython访问sqlite3功能: IronPython.SQLite

我的程序是一个GUI应用程序并访问sqlite数据库。当通过IronPython中的ipy.exe解释器启动程序时,所有内容(包括数据库访问)都非常完美。

但是,如果我尝试启动我用SharpDevelop编译成可执行文件的程序,我得到例外:

  

IronPython.Runtime.Exceptions.ImportException:   没有名为_sqlite3的模块

此异常的原因位于dbapi2.py:

  

来自_sqlite3 import *

在IronPython控制台上,我可以导入_sqlite3并按预期使用它。

我已经向SharpDevelop提供了sqlite3模块的路径,但是在IronPython或sqlite3-module文件夹中没有任何名为_sqlite3的文件。

请告诉我在构建程序的编译版本时会出现什么问题。

非常感谢。

2 个答案:

答案 0 :(得分: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位于同一目录中。无论如何,这是我的首选选项,我应该在有机会时将其添加到说明中。

答案 1 :(得分:3)

我已经预料到你会告诉我以某种方式引用DLL。

在几次失败后我能够成功编译程序,但包含DLL有点棘手。

  1. 我将DLL添加到SharpDevelop References。
  2. 我必须在脚本中添加以下代码:
  3. import sys import nt import clr sys.path.append(nt.getcwd()) clr.AddReferenceToFile('IronPython.SQLite.dll')

    这是指向执行目录中的DLL的必要条件。

    非常感谢你的帮助。