Bazı arka plan: Python 3'te Pyramid ve SqlAlchemy ORM kullanan ve mysql veritabanına devam etmek için kullanılan bir kod tabanımız var. ORM kullanarak sınıflarımız için testler yazmak için Sqlite kullanıyoruz. Bütün bunlar gayet iyi çalışıyor ... yerel olarak.ImportError: Python 3 Ubuntu 'da test çalıştırırken' pysqlite2 'adında bir modül yok. Ubuntu
Test paketini çalıştırmak için Jenkins (Ubuntu) sunucumuzu kurmak, bir virtualenv içinde, bir sorunla karşılaşırız. Testler şu şekilde uygulanır: ORM'yi içermeyen testler iyidir. ORM olanlar bu hatayı atmak: (virtualenv içinden) sqlite3 denetleniyor
____________________________________________________________ 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
başarılıdır:
(swapenv)[email protected]:/var/lib/jenkins/workspace/SWAP_Unit_Test$ which sqlite3
/usr/bin/sqlite3
Ayrıca virtualenv dışında başarılıdır. Sqlite kütüphanesi Python 3'ün bir parçası olduğu iddia edilen tüm sqlite paketleri, sqlite-dev, vs. dosyalarını yüklemeyi ve yeniden yüklemeyi denedik, ancak daha sonra testler çalıştırıldığında neden bulunamıyor?
"sqlite3" komutunun sadece "sqlite3" komut satırı aracının yüklü olduğunu gösterir; Bu Python'un kullandığı değil. 'Libsqlite3' paylaşılan kütüphanesini kullanır (komut satırı aracı da kullanır). Python ikiliniz nasıl derlendi? 'Sqlite3' Python modülünü eksik (' bin/python -c 'import sqlite3'' ile doğrulayın.) –
'py.test' traceback'in yanıltıcı olduğunu not edin, görüntülenen değil, son hatayı veren 339 satırıdır. hat 334 (yakalanan), bkz. [sürücü kaynak kodu] (https: // bitbucket.org/zzzeek/sqlalchemy/src/bd61e7a3287079cf742f4df698bfe3628c090522/lib/sqlalchemy/ağızları/oracle/pysqlite.py = ana # cl-331) de; Burada başarısız olan sqlite3'ün ithalatıdır. –
jenkins komut dosyasının kodunu yapıştırın mı? Virtualenv nasıl kurulur? 1. virtualenv'de yüklü tüm bağımlılıkları kontrol edin. 2. Kapsamınızın doğru virtualenv içinde çalıştığından emin olun. – Shuo