2010-08-18 24 views
5

Tôi đang làm việc với SharpDevelop 3.2.0, IronPython 2.6.1 cho .Net4.Sử dụng sqlite3 với IronPython 2.6 cho .Net4

Để có quyền truy cập vào các chức năng sqlite3 sử dụng mô-đun này cho IronPython: IronPython.SQLite

chương trình của tôi là một ứng dụng GUI và truy cập vào một cơ sở dữ liệu SQLite. Khi bắt đầu chương trình thông qua trình thông dịch ipy.exe từ IronPython mọi thứ (bao gồm truy cập cơ sở dữ liệu) hoạt động hoàn hảo.

Nhưng nếu tôi cố gắng để bắt đầu chương trình tôi biên soạn với SharpDevelop đến một thực thi, tôi nhận được một ngoại lệ:

IronPython.Runtime.Exceptions.ImportException: Không mô-đun tên _sqlite3

Lý do cho ngoại lệ này nằm trong dbapi2.py:

từ _sqlite3 import *

Trên bảng điều khiển IronPython, tôi có thể nhập _sqlite3 và sử dụng nó như dự định.

Tôi đã cung cấp cho SharpDevelop đường dẫn đến mô-đun sqlite3, nhưng không có tệp có tên _sqlite3 ở bất kỳ đâu trong thư mục IronPython hoặc sqlite3-module.

Hãy cho tôi biết điều gì có thể gây ra sự cố này khi tạo phiên bản được biên dịch của chương trình của tôi.

Cảm ơn bạn rất nhiều.

Trả lời

4

Không có tệp _sqlite3 ở bất kỳ đâu; IronPython.Sqlite.dll cung cấp một mô-đun gọi là _sqlite3.

Nếu bạn làm theo hướng dẫn trang web và đặt IronPython.Sqlite.dll trong thư mục DLLs, đó có thể là lý do tại sao nó không hoạt động trong SharpDevelop. Khi chạy ipy.exe, nó ngầm thêm một tham chiếu đến bất kỳ DLL nào trong thư mục DLLs. Khi SharpDevelop xây dựng một tệp thực thi, nó là một nhánh nhỏ chạy IronPython, nhưng nó không biết về bất kỳ phiên bản cài đặt của IronPython và do đó sẽ không tải bất cứ thứ gì từ thư mục DLL.

tốt nhất của bạn là để sửa đổi kịch bản chính của bạn để bao gồm

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

và sau đó hãy chắc chắn rằng IronPython.SQLite.dll là trong cùng thư mục với các file exe. Đây là lựa chọn ưa thích của tôi, và tôi nên thêm nó vào các hướng dẫn khi tôi có cơ hội.

3

Tôi đã mong đợi bạn nói với tôi để tham khảo bằng cách nào đó để DLL.

Sau một vài lỗi, tôi đã có thể biên dịch chương trình thành công, nhưng sẽ phức tạp hơn một chút khi đưa DLL vào.

  1. Tôi đã thêm DLL vào Tham chiếu SharpDevelop.
  2. tôi phải thêm mã sau vào kịch bản của tôi:

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

này là cần thiết để trỏ đến các DLL trong thư mục thi công của tôi.

Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn.

Các vấn đề liên quan