कुछ पृष्ठभूमि: हमारे पास पाइथन 3 में एक कोडबेस लिखा गया है जो एक MySQL डेटाबेस पर बने रहने के लिए पिरामिड और एसक्लएल्चेमी ओआरएम का उपयोग करता है। ओआरएम का उपयोग करके हमारी कक्षाओं के लिए परीक्षण लिखने के लिए हम स्क्लाइट का उपयोग कर रहे हैं। यह सब एक साथ ठीक काम करता है ... स्थानीय रूप से।आयात त्रुटि: पाइथन 3 में परीक्षण चलाते समय 'pysqlite2' नामक कोई मॉड्यूल नहीं उबंटू
वर्चुअलनव के अंदर परीक्षण सूट चलाने के लिए हमारे जेनकिन्स (उबंटू) सर्वर को सेट अप करना, हम एक समस्या में भाग लेते हैं। परीक्षणों को इस प्रकार निष्पादित किया जाता है:
coverage run --source src/ --omit=src/tests/ -m py.test
ओआरएम शामिल नहीं होने वाले टेस्ट ठीक हैं। ORM के साथ जो इस त्रुटि फेंक: (virtualenv अंदर से)
____________________________________________________________ TestSGenre.test_get_all_success _____________________________________________________________
self = <tests.common.orm.models.test_s_genre.TestSGenre testMethod=test_get_all_by_discipline_success>
def setUp(self):
DBSession.remove()
> self.engine = setup()
source/src/tests/common/orm/models/test_s_genre.py:13:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
source/src/tests/common/orm/orm_setup.py:7: in setup
engine = create_engine('sqlite://', connect_args={'check_same_thread': False}, poolclass=StaticPool)
/var/www/hosts/company/virtualenv/swapenv/lib/python3.4/site-packages/sqlalchemy/engine/__init__.py:386: in create_engine
return strategy.create(*args, **kwargs)
/var/www/hosts/company/virtualenv/swapenv/lib/python3.4/site-packages/sqlalchemy/engine/strategies.py:74: in create
dbapi = dialect_cls.dbapi(**dbapi_args)
/var/www/hosts/company/virtualenv/swapenv/lib/python3.4/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py:339: in dbapi
raise e
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite'>
@classmethod
def dbapi(cls):
try:
> from pysqlite2 import dbapi2 as sqlite
E ImportError: No module named 'pysqlite2'
/var/www/hosts/company/virtualenv/swapenv/lib/python3.4/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py:334: ImportError
sqlite3 के लिए जांच की जा रही सफल हुआ:
(swapenv)[email protected]:/var/lib/jenkins/workspace/SWAP_Unit_Test$ which sqlite3
/usr/bin/sqlite3
यह भी virtualenv के बाहर सफल रहा है। हमने सभी प्रकार के स्क्लाइट पैकेज, एसक्लाइट-देव इत्यादि को स्थापित करने और पुनर्स्थापित करने का प्रयास किया है। माना जाता है कि स्क्लाइट लाइब्रेरी पायथन 3 का हिस्सा है, लेकिन फिर परीक्षणों को चलाने के दौरान यह क्यों नहीं मिल सकता है?
'sqlite3' कमांड केवल दिखाता है कि आपके पास' sqlite3' कमांड लाइन उपकरण स्थापित है; यह पाइथन का उपयोग नहीं करता है। यह 'libsqlite3' साझा लाइब्रेरी का उपयोग करता है (जो कमांड लाइन टूल भी उपयोग करता है)। आपके पायथन बाइनरी कैसे संकलित किया गया था? आप 'sqlite3' पायथन मॉड्यूल खो रहे हैं ('bin/python -c' आयात sqlite3'' के साथ सत्यापित करें। –
ध्यान दें कि' py.test' ट्रेसबैक भ्रामक है; यह लाइन 33 9 है जो अंतिम त्रुटि को बढ़ाती है, प्रदर्शित नहीं लाइन 334 (जो पकड़ा गया है); [ड्राइवर स्रोत कोड] देखें (https: // बिटबकेट।org/zzzeek/SQLAlchemy/src/bd61e7a3287079cf742f4df698bfe3628c090522/lib/SQLAlchemy/बोलियों/SQLite/pysqlite.py = मास्टर # सीएल-331) पर? यह 'sqlite3' के लिए आयात है जो यहां विफल रहता है। –
जेनकींस स्क्रिप्ट का कोड पेस्ट करें? वर्चुअलenv कैसे सेट अप करते हैं? 1. वर्चुअलएन्व में स्थापित सभी निर्भरताओं की जांच करें। 2. सुनिश्चित करें कि आपका कवरेज सही वर्चुअलएनवी के अंदर चलता है। – Shuo