2010-07-26 41 views
9

Tôi đã sử dụng Python 2.6.5 để xây dựng ứng dụng của tôi, đi kèm với sqlite3 3.5.9. Dẫu vậy, như tôi đã phát hiện ra trong một câu hỏi khác của tôi, hỗ trợ khóa ngoài không được giới thiệu trong sqlite3 cho đến phiên bản 3.6.19. Tuy nhiên, Python 2.7 đi kèm với sqlite3 3.6.21, do đó, công việc này - Tôi quyết định tôi muốn sử dụng các phím nước ngoài trong ứng dụng của tôi, vì vậy tôi đã thử nâng cấp lên python 2.7.Làm cách nào để nâng cấp gói sqlite3 trong Python 2.6?

Tôi đang sử dụng xoắn, và tôi không thể cho cuộc sống của tôi làm cho nó để xây dựng. Twisted dựa trên zope.interface và tôi không thể tìm thấy zope.interface cho python 2.7 - Tôi nghĩ rằng nó có thể chỉ "làm việc" anyway, nhưng tôi phải chỉ cần sao chép tất cả các tập tin trên bản thân mình, và nhận được tất cả mọi thứ làm việc bản thân mình, thay vì chỉ sử dụng các gói tự cài đặt.

Vì vậy, tôi nghĩ có thể khôn ngoan hơn khi xây dựng lại python 2.6 và liên kết nó với phiên bản mới của sqlite3. Nhưng tôi không biết làm thế nào--

Tôi sẽ làm điều này như thế nào?

Tôi đã Visual Studio 2008 cài đặt như một trình biên dịch, tôi đọc rằng đó là người duy nhất thực sự được hỗ trợ cho Windows, và tôi đang chạy một hệ điều hành 64 bit

+0

bạn có thể ném thêm một phụ thuộc vào chảy máu trong đó không? ;) – msw

+0

@msw Tôi hiểu việc nâng cấp lên con trăn mới nhất _very và mong các thư viện hiện có hỗ trợ nó là vô lý. Nhưng tôi không nghĩ rằng việc đạt được hỗ trợ sẵn có cho một rdbms hỗ trợ các tính năng cơ bản cho đến nay được tìm nạp, đặc biệt khi bạn tương đối mới với sql và muốn bảo mật rằng các bảng của bạn sẽ trả lại bạn nếu rác cố gắng thực hiện theo cách của nó vào cơ sở dữ liệu của bạn. –

+0

Tôi không nghĩ rằng nó quá xa vời và không nghiêm túc, từ đâu cười;) Tôi đã nghĩ rằng bạn đang tự mua mình trong tình trạng phụ thuộc chéo mà thực ra bạn đã trở thành. Hòa bình. – msw

Trả lời

3

sqlite3 không phải là mô-đun tích hợp; nó là một mô-đun mở rộng (nhị phân là C: \ Python26 \ DLLs_sqlite3.pyd (trên máy của tôi)). Một pyd là một DLL với phần mở rộng tên tệp khác và chỉ có 1 điểm vào. Ngoài ra còn có một sqlite3.dll, có chứa mã SQLite. python.exe không được liên kết với một trong những người, và do đó xây dựng lại python.exe không có điểm.

Ý tưởng tiếp theo là truy cập trang tải xuống pysqlite2 và tải xuống trình cài đặt Windows mới nhất cho Python 2.6. Thật không may là không có tài liệu về phiên bản của SQLite nó chứa; một trong những nhu cầu để cài đặt nó và sau đó muck về:

>>> import sqlite3 as standard 
>>> from pysqlite2 import dbapi2 as latest 
>>> for m in (standard, latest): 
... print m.sqlite_version 
... 
3.5.9 
3.6.2 
>>> 

Vì vậy, nó chỉ chứa phiên bản SQLite 3.6.2, mà không có hỗ trợ chính nước ngoài thực sự mà bạn muốn.

Tôi khuyên bạn nên kiểm tra mailing list để xem câu hỏi của bạn có được trả lời ở đó không và không hỏi về khả năng của trình cài đặt Python 2.6 có chứa SQLite sau (ví dụ: SQLite).

+0

Tôi thấy, cảm ơn bạn, tôi không hoàn toàn quen thuộc với python internals. –

1

tôi quyết định rằng tôi chỉ muốn cung cấp cho này một shot khi tôi nhận ra rằng mọi thư viện mà tôi từng cài đặt trong python 2.6 đều nằm trong thư mục site-packages của mình. Tôi chỉ ... sao chép các gói trang web để cài đặt 2.7 của tôi, và nó hoạt động cho đến nay. Đây là con đường dễ dàng nhất đối với tôi nếu nó hoạt động - Tôi sẽ xem xét kỹ hơn, nhưng ít nhất tôi có thể tiếp tục phát triển ngay bây giờ.

Tôi sẽ không chấp nhận câu trả lời này, bởi vì nó thậm chí không trả lời câu hỏi của tôi, nhưng nó giải quyết vấn đề của tôi, theo như tôi có thể nói cho đến nay.

+0

+1 đây là một câu trả lời chấp nhận được cho mê cung của phụ thuộc ít xoắn, tất cả như nhau, mà bạn đã tìm thấy chính mình in Tôi đã trở lại chuyển chọn, nhỏ lib/python3.x/foo.py vào python2.6 khi một dự án cụ thể cần nó (và kiểm tra địa ngục của nó, và sẽ không nghĩ đến việc gây ra nó trên bất cứ thứ gì nhưng cài đặt cục bộ của tôi) nhưng nó hoạt động và so với các lựa chọn thay thế, là một sự cân bằng kỹ thuật thỏa mãn . – msw

+0

Điều này giả định rằng không có thư viện nào mà bạn đã từng cài đặt trong các gói trang web chứa bất kỳ phần mở rộng C hoặc Cython nào - trên Windows ít nhất, các tệp .PYD đó được gắn với một phiên bản Python cụ thể. –

+0

@ John uh oh - Tôi đã nhận thấy rằng tất cả các tệp .pyc của tôi không thành công với "số ma thuật xấu" mà tôi giả định có nghĩa là phiên bản sai của python. Tôi vừa xóa chúng. Dù sao, việc cài đặt xoắn mà tôi đã được cài đặt từ trình cài đặt cửa sổ từ trang web chính thức và nó xuất hiện để được làm việc (tôi hy vọng) (gói xoắn có phần mở rộng C). Trong mọi trường hợp, đây là phiên bản địa phương của tôi. Đang cố gắng để có được thông dịch viên và tất cả các phụ thuộc của nó được thiết lập trên một máy chủ trực tiếp là ... Một vấn đề cho một ngày khác! –

6

tải xuống phiên bản mới nhất của sqlite3.dll từ trang web sqlite và thay thế sqlite3.dll trong thư mục python.

+0

+1000 (nếu có thể). Điều này chỉ cần nâng cấp python của tôi 2.6 cài đặt để sqlite 3.7.17 (x86) http://www.sqlite.org/download.html – Barton

+0

Làm việc với python 2,7 là tốt –

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