2010-08-18 6 views
5

Ich arbeite mit SharpDevelop 3.2.0, IronPython 2.6.1 für. Net4.Mit sqlite3 mit IronPython 2.6 für. Net4

Um Zugriff auf die sqlite3 Funktionalität haben dieses Modul für Ironpython mit: IronPython.SQLite

Mein Programm ist eine GUI-Anwendung und Zugriff auf eine SQLite-Datenbank. Beim Starten des Programms über den ipy.exe-Interpreter von IronPython funktioniert alles (inklusive des Datenbankzugriffs) einfach perfekt.

Aber wenn ich versuche, das Programm i mit SharpDevelop zu einer ausführbaren Datei kompiliert zu starten, bekomme ich die Ausnahme:

IronPython.Runtime.Exceptions.ImportException: Kein _sqlite3

namens Modul

der Grund für diese Ausnahme ist in dbapi2.py befindet:

von _sqlite3 import *

Auf der IronPython-Konsole kann ich _sqlite3 importieren und wie gewünscht verwenden.

Ich habe SharpDevelop bereits die Pfade zum sqlite3-Modul gegeben, aber in IronPython oder dem Ordner sqlite3-modul gibt es keine Datei namens _sqlite3.

Bitte sagen Sie mir, was könnte dieses Problem beim Erstellen einer kompilierten Version meines Programms verursachen.

Vielen Dank.

Antwort

4

Es gibt keine _sqlite3 Datei irgendwo; IronPython.Sqlite.dll stellt ein Modul mit der Bezeichnung _sqlite3 bereit.

Wenn Sie die Anweisungen auf der Website befolgen und IronPython.Sqlite.dll im DLLs-Ordner ablegen, funktioniert das wahrscheinlich nicht unter SharpDevelop. Wenn ipy.exe ausgeführt wird, fügt es implizit einen Verweis auf eine beliebige DLL im Ordner DLLs hinzu. Wenn SharpDevelop eine ausführbare Datei erstellt, handelt es sich um einen kleinen Stub, auf dem IronPython ausgeführt wird, der jedoch keine installierten Versionen von IronPython kennt und daher nichts aus dem DLLs-Ordner lädt.

Ihre beste ist Ihr Haupt-Skript zu ändern

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

aufzunehmen und dann sicherstellen, dass IronPython.SQLite.dll im selben Verzeichnis wie die exe ist. Dies ist sowieso meine bevorzugte Option, und ich sollte es den Anweisungen hinzufügen, wenn ich eine Chance bekomme.

3

Ich habe bereits erwartet, dass Sie mir sagen, dass ich irgendwie auf die DLL verweisen soll.

Nach ein paar Fehlern konnte ich das Programm erfolgreich kompilieren, aber es war etwas komplizierter, die DLL einzuschließen.

  1. Ich habe die DLL in SharpDevelop-Referenzen hinzugefügt.
  2. Ich hatte folgenden Code zu meinem Skript hinzuzufügen:

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

Dies war notwendig, um die DLL in meinem Ausführungsverzeichnis zu zeigen.

Vielen Dank für Ihre Hilfe.