2010-07-26 9 views
9

मैं अपने आवेदन को बनाने के लिए पायथन 2.6.5 का उपयोग कर रहा था, जो वर्ग 3 3.5.9 के साथ आया था। जाहिर है, जैसा कि मैंने अपने एक अन्य प्रश्न में पाया, विदेशी कुंजी समर्थन संस्करण 3.6.1 9 तक sqlite3 में पेश नहीं किया गया था। हालांकि, पायथन 2.7 sqlite3 3.6.21 के साथ आता है, इसलिए यह काम - मैंने फैसला किया कि मैं अपने आवेदन में विदेशी कुंजी का उपयोग करना चाहता था, इसलिए मैंने पायथन 2.7 में अपग्रेड करने का प्रयास किया।मैं पायथन 2.6 में sqlite3 पैकेज को अपग्रेड कैसे कर सकता हूं?

मैं मुड़ता हुआ उपयोग कर रहा हूं, और मैं इसे बनाने के लिए इसे प्राप्त करने के लिए नहीं कर सका। टिस्ड zope.interface पर निर्भर करता है और मुझे पायथन 2.7 के लिए zope.interface नहीं मिल रहा है - मैंने सोचा कि यह सिर्फ "काम" कर सकता है, लेकिन मुझे बस अपनी फाइलों को प्रतिलिपि बनाना होगा, और सबकुछ खुद को काम करना होगा, स्वयं स्थापित पैकेज का उपयोग करने के बजाय।

तो मैंने सोचा कि यह सिर्फ पाइथन 2.6 को फिर से बनाना और स्क्लाइट 3 के नए संस्करण के खिलाफ लिंक करना बुद्धिमान हो सकता है। लेकिन मुझे नहीं पता कि कैसे -

मैं यह कैसे करूँगा?

मैं विजुअल स्टूडियो 2008 एक संकलक के रूप में स्थापित किया है, मैंने पढ़ा है कि कि केवल एक ही है कि वास्तव में विंडोज के लिए समर्थित है है, और मैं एक 64 बिट ऑपरेटिंग सिस्टम

+0

क्या आप वहां केवल एक और खून बहने वाली किनारे निर्भरता फेंक सकते हैं? ;) – msw

+0

@msw मैं _very नवीनतम_ पायथन को अपग्रेड करना समझता हूं और मौजूदा पुस्तकालयों को इसका समर्थन करने की उम्मीद करता हूं, यह एक हास्यास्पद है। लेकिन मुझे नहीं लगता कि बुनियादी सुविधाओं का समर्थन करने वाले rdbms के लिए अंतर्निहित समर्थन तक पहुंचने के लिए अब तक पहुंचाया गया है, खासकर जब आप एसक्यूएल के लिए अपेक्षाकृत नए हैं और सुरक्षा चाहते हैं कि कचरा बनाने की कोशिश करने पर आपकी टेबल आपको वापस लाएगी अपने डेटाबेस में इसका रास्ता। –

+0

मैंने यह नहीं सोचा था कि यह बहुत दूर है और गंभीर नहीं था, जहां से स्माइली;) मैंने सोचा था कि आप खुद को क्रॉस-निर्भरता लिम्बो में खरीद रहे थे, जो वास्तव में आप बन गए थे। शांति। – msw

उत्तर

3

sqlite3 एक अंतर्निहित मॉड्यूल नहीं है; यह एक विस्तार मॉड्यूल है (बाइनरी सी है: \ Python26 \ DLLs_sqlite3.pyd (मेरी मशीन पर))। एक पीईडी एक अलग फ़ाइल नाम एक्सटेंशन और केवल 1 प्रविष्टि बिंदु के साथ एक डीएलएल है। एक sqlite3.dll भी है, जिसमें SQLite कोड शामिल है। python.exe उनमें से किसी के खिलाफ जुड़ा हुआ नहीं है, और इस प्रकार python.exe का पुनर्निर्माण कोई बिंदु नहीं है।

अगला विचार pysqlite2 डाउनलोड साइट पर जाना है, और पाइथन 2.6 के लिए नवीनतम विंडोज इंस्टालर प्राप्त करना है। दुर्भाग्यवश इसमें कोई दस्तावेज़ नहीं है कि SQLite के किस संस्करण में यह शामिल है;

>>> 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 
>>> 

इसलिए, यह केवल SQLite संस्करण 3.6.2, जो असली विदेशी कुंजी समर्थन है कि आप चाहते हैं नहीं है शामिल हैं: एक स्थापित और फिर इधर-उधर फिरना की जरूरत है।

मेरा सुझाव है कि आप mailing list को यह देखने के लिए जांचें कि क्या आपके प्रश्न का उत्तर दिया गया है, और यदि बाद में SQLite (जैसे कि पायथन 2.7 के साथ शामिल एक पाइथन 2.6 इंस्टॉलर) की संभावना के बारे में नहीं पूछता है।

+0

मैं देखता हूं, धन्यवाद, मैं पाइथन आंतरिक से काफी परिचित नहीं हूं। –

1

मैंने तय कर लिया कि मैं सिर्फ इस दे होता चला रहा हूँ एक शॉट जब मुझे एहसास हुआ कि मैंने कभी भी लाइब्रेन 2.6 में स्थापित हर लाइब्रेरी को मेरे साइट-पैकेज फ़ोल्डर में रखा है। मैं बस ... 2.7 स्थापना में साइट-पैकेज कॉपी किया, और यह अब तक काम करता है। यदि यह काम करता है तो यह मेरे लिए सबसे आसान मार्ग है - मैं इसमें आगे देखूंगा लेकिन कम से कम मैं अब विकसित करना जारी रख सकता हूं।

मैं इस उत्तर को स्वीकार नहीं करूंगा, क्योंकि यह मेरे प्रश्न का भी उत्तर नहीं देता है, लेकिन यह मेरी समस्या का समाधान करता है, जहां तक ​​मैं अब तक बता सकता हूं।

+0

+1 यह एक स्वीकार्य उत्तर है जो ट्विस्टी छोटी निर्भरताओं की भूलभुलैया है, जैसा कि आपने स्वयं को पाया है। मैंने बैक-पोर्ट चयनित है, मामूली lib/python3.x/foo.py python2.6 में जब किसी विशेष परियोजना को इसकी आवश्यकता होती है (और इसमें से नरक का परीक्षण किया जाता है, और यह मेरे स्थानीय इंस्टॉल के अलावा किसी भी चीज़ पर इसे लागू करने के बारे में नहीं सोचता) लेकिन यह काम करता है और विकल्पों की तुलना में, एक इंजीनियरिंग व्यापार-बंद है जो सतर्क था । – msw

+0

यह मानता है कि साइट-पैकेज में आपने कभी भी स्थापित पुस्तकालयों में से कोई भी सी या साइथन एक्सटेंशन नहीं है - कम से कम विंडोज़ पर। पीवायडी फाइलें पाइथन के किसी विशेष संस्करण से बंधी हुई हैं। –

+0

@ जॉन ओह ओह - मैंने देखा कि मेरी सभी .pyc फ़ाइलें "खराब जादू संख्या" के साथ विफल रहीं, जिसे मैंने पाइथन के गलत संस्करण का अर्थ माना। मैंने अभी उन्हें हटा दिया। वैसे भी, मुड़ने की स्थापना जो मैंने आधिकारिक साइट से विंडोज इंस्टालर से स्थापित की थी और ऐसा लगता है कि यह काम कर रहा है (मुझे उम्मीद है) (मुड़ वाले पैकेज में सी एक्सटेंशन हैं)। किसी भी मामले में, यह मेरे स्थानीय संस्करण के लिए है। दुभाषिया और लाइव सर्वर पर स्थापित इसकी सभी निर्भरताओं को प्राप्त करने का प्रयास कर रहा है ... एक और दिन के लिए एक समस्या है! –

6

sqlite वेबसाइट से sqlite3.dll का नवीनतम संस्करण डाउनलोड करें और python dir में sqlite3.dll को प्रतिस्थापित करें।

+0

+1000 (अगर मैं कर सकता था)। यह सिर्फ मेरे python 2.6 को sqlite 3.7.17 (x86) में स्थापित किया गया है http://www.sqlite.org/download.html – Barton

+0

पायथन 2.7 के साथ भी काम करता है –

संबंधित मुद्दे