5

私はSharpDevelop 3.2.0、.Net4用のIronPython 2.6.1を使用しています。

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

2 に答える 2

4

_sqlite3どこにもファイルはありません。IronPython.Sqlite.dll は、 というモジュールを提供します_sqlite3

Web サイトの指示に従い、IronPython.Sqlite.dll を DLLs フォルダーに配置すると、SharpDevelop で動作しない可能性があります。ipy.exe を実行すると、DLLs フォルダー内の任意の DLL への参照が暗黙的に追加されます。SharpDevelop が実行可能ファイルをビルドするとき、それは IronPython を実行する小さなスタブですが、インストールされている IronPython のバージョンを認識しないため、DLL フォルダーから何もロードしません。

あなたの最善は、メインスクリプトを変更して含めることです

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

次に、IronPython.SQLite.dll が exe と同じディレクトリにあることを確認します。とにかくこれは私の好みのオプションであり、機会があれば説明に追加する必要があります.

于 2010-08-18T16:13:56.847 に答える
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 を指すために必要でした。

ご助力ありがとうございます。

于 2010-08-19T08:53:46.183 に答える