Форум сайта python.su
День добрый!
Возможно кто-то сможет объяснить почему происходит следующее:
win7x64+Python2.7+Flask0.10.1+flask_sqlalchemy1.0+firebird2.1+kinterbasedb
from flask import Flask, render_template from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.debug = True app.config.from_object(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'firebird+kinterbasdb://sysdba:masterkey@server:3050/d:/base.fdb' fdb = SQLAlchemy(app) class Discount(fdb.Model): name = fdb.Column(fdb.String(40)) @app.route('/discount') def show_discount(): names = Discount.query.all() return render_template('show_discount.html', names=names)
Traceback (most recent call last): File "C:/Apache2.2/wsgi_scripts/discount.wsgi", line 10, in <module> from discount import app as application File "c:/apache2.2/cgi-bin/discount\\discount.py", line 30, in <module> discs = Disccli.query.limit(30) File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 428, in __get__ return type.query_class(mapper, session=self.sa.session()) File "build\\bdist.win32\\egg\\sqlalchemy\\orm\\scoping.py", line 70, in __call__ return self.registry() File "build\\bdist.win32\\egg\\sqlalchemy\\util\\_collections.py", line 903, in __call__ return self.registry.setdefault(key, self.createfunc()) File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 139, in __init__ bind=db.engine, File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 780, in engine return self.get_engine(self.get_app()) File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 797, in get_engine return connector.get_engine() File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 473, in get_engine self._engine = rv = sqlalchemy.create_engine(info, **options) File "build\\bdist.win32\\egg\\sqlalchemy\\engine\\__init__.py", line 335, in create_engine return strategy.create(*args, **kwargs) File "build\\bdist.win32\\egg\\sqlalchemy\\engine\\strategies.py", line 73, in create dbapi = dialect_cls.dbapi(**dbapi_args) File "build\\bdist.win32\\egg\\sqlalchemy\\dialects\\firebird\\kinterbasdb.py", line 101, in dbapi return __import__('kinterbasdb') File "C:\\Python27\\lib\\site-packages\\kinterbasdb\\__init__.py", line 119, in <module> import _kinterbasdb as _k ImportError: DLL load failed: \xcf\xf0\xee\xe8\xe7\xee\xf8\xe5\xeb \xf1\xe1\xee\xe9 \xe2 \xef\xf0\xee\xe3\xf0\xe0\xec\xec\xe5 \xe8\xed\xe8\xf6\xe8\xe0\xeb\xe8\xe7\xe0\xf6\xe8\xe8 \xe1\xe8\xe1\xeb\xe8\xee\xf2\xe5\xea\xe8 \xe4\xe8\xed\xe0\xec\xe8\xf7\xe5\xf1\xea\xee\xe9 \xea\xee\xec\xef\xee\xed\xee\xe2\xea\xe8 (DLL).
Офлайн
Рискну предположить что разрядности apache и fbclient.dll разные.
Офлайн
нет, разрядность одинаковая, апачь httpd-2.2.25-win32-x86-no_ssl.msi, и приложение, для которого пишу, так скажем, плагин, не работает с firebird x64, нет udf для него, поэтому firebird тоже x32
Офлайн
Тогда следующее, что я бы проверил: пути к DLL и права. Но про виндоус я плохой советчик
Офлайн
пути и права - это первое, что пришло мне в голову, fbclient.dll позакидывал уже куда только можно, сейчас на ubuntu хочу проверить, какой эффект будет у этой связки, правда даже если заработает надо будет что-то думать, ибо прога только под винду
Офлайн
попробовал на убунте, результат тот же, ошибка kinterbasdb при импорте, пришлось использовать fdb, отказавшись от поддержки старых версий, работающих с interbase 7.5
Офлайн
история получила продолжение, возникла такая же проблема с lxml, решил разобраться до конца, на винде помогло следующее:
- скачал windows sdk 7.1 (у меня не ставился, пока я не удалил VC++ 2010)
- в консоли:
mt -inputresource:“c:\python27\python.exe”;#1 -out:“c:\python27\extracted.python.exe.manifest”
- в файле extracted.python.exe.manifest удалил секцию <trustInfo>
- перенес файлик в директорию apache и переименовал в httpd.exe.manifest
- при остановленом apache в консоли:
mt -manifest “c:\apache22\bin\httpd.exe.manifest” -outputresource:“c:\apache22\bin\httpd.exe”;#1
после этого проблема исчезла, и с kinterbasdb и с lxml
Офлайн