2010-08-18 65 views
5

我正在使用SharpDevelop 3.2.0,IronPython 2.6.1 for .Net4。使用sqlite3與IronPython 2.6 for .net4

要訪問使用該模塊的IronPython的sqlite3的功能: IronPython.SQLite

我的程序是一個GUI應用程序和訪問SQLite數據庫。當從IronPython通過ipy.exe解釋器啓動程序時,所有內容(包括數據庫訪問)都可以正常工作。

但是,如果我嘗試啓動我的SharpDevelop編譯成可執行程序,我得到異常:

IronPython.Runtime.Exceptions.ImportException: 沒有名爲_sqlite3

模塊其原因除了位於dbapi2.py:

從_sqlite3進口*

在IronPython控制檯上,我可以導入_sqlite3並按預期使用它。

我已經給了SharpDevelop到sqlite3模塊的路徑,但是在IronPython或sqlite3-module文件夾的任何地方都沒有名爲_sqlite3的文件。

請告訴我在構建我的程序的編譯版本時,可能會導致此問題的原因。

非常感謝。

回答

4

任何地方都沒有_sqlite3文件; IronPython.Sqlite.dll提供了一個名爲_sqlite3的模塊。

如果您按照網站上的說明將IronPython.Sqlite.dll放入DLL文件夾中,那可能就是爲什麼它在SharpDevelop下無法使用。運行ipy.exe時,它會隱式添加對DLL文件夾中任何DLL的引用。當SharpDevelop構建一個可執行文件時,它是一個運行IronPython的小存根,但它不知道任何已安裝的IronPython版本,因此不會加載DLL文件夾中的任何內容。

你最好是修改主腳本以包括

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

,然後確保IronPython.SQLite.dll是在同一目錄下的EXE。無論如何,這是我的首選選項,我應該在獲得機會時將其添加到說明中。

3

我已經期待你告訴我以某種方式引用該DLL。

經過幾次失敗後,我能夠成功地編譯程序,但包含該DLL有點棘手。

  1. 我將該DLL添加到SharpDevelop References中。
  2. 我不得不以下代碼添加到我的腳本:

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

這是必要的,以指向我的執行目錄中的DLL。

非常感謝您的幫助。