Sto eseguendo un programma da un'altra persona che è in disagio chiedere aiuto da. Il programma è un sito web. Il server end è scritto da python e flask (modulo, http://flask.pocoo.org/). Il programma è stato eseguito correttamente sul server. Quello che devo fare è modificare qualcosa su di esso. Poiché il server di produzione non è consentito per il test, l'ho testato nel server di sviluppo localmente tramite il pallone. Tuttavia, non ho potuto eseguire nemmeno il programma originale. Di seguito è riportato da python.sqlalchemy.exc.OperationalError: (OperationalError) non è in grado di aprire il file di database Nessuno Nessuno
(venv)[email protected]:~/python/public_html$ python index.wsgi
Traceback (most recent call last): File "index.wsgi", line 6, in from app import app as application
File "/home/kevin/python/public_html/app.py", line 27, in <module>
app = create_app()
File "/home/kevin/python/public_html/app.py", line 12, in create_app
database.init_db()
File "/home/kevin/python/public_html/database.py", line 24, in init_db
Base.metadata.create_all(engine)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2793, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1478, in _run_visitor
with self._optional_conn_ctx_manager(connection) as conn:
File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1471, in _optional_conn_ctx_manager
with self.contextual_connect() as conn:
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1661, in contextual_connect
self.pool.connect(),
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 272, in connect
return _ConnectionFairy(self).checkout()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 425, in __init__
rec = self._connection_record = pool._do_get()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 857, in _do_get
return self._create_connection()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 225, in _create_connection
return _ConnectionRecord(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 318, in __init__
self.connection = self.__connect()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 368, in __connect
connection = self.__pool._creator()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 80, in connect
return dialect.connect(*cargs, **cparams)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 283, in connect
return self.dbapi.connect(*cargs, **cparams)
sqlalchemy.exc.OperationalError: (OperationalError) unable to open database file None None
Nel file config.py
LOGFILE = '/tmp/ate.log' DEBUG = True TESTING = True THREADED = True DATABASE_URI = 'sqlite:////tmp/ate.db' SECRET_KEY = os.urandom(24)
Quindi, ho creato una cartella chiamata "tmp" sotto il mio utente e un file vuoto chiamato "ate.db". Quindi, eseguito di nuovo. Ha detto
IOError: [Errno 2] No such file or directory: '/home/kevin/log/ate.log'
Quindi, ho creato la cartella di registro e il file di registro. Eseguirlo, ma non è successo niente, come
(venv)[email protected]:~/python/public_html$ python index.wsgi (venv)[email protected]:~/python/public_html$ python index.wsgi (venv)[email protected]:~/python/public_html$
Se è successo, il sito web dovrebbe essere accessibile http://127.0.0.1:5000
/. Tuttavia, non ha funzionato. Qualcuno sa perché e come risolverlo? I codici dovrebbero andare bene dato che ora è disponibile online. Il problema dovrebbe essere un problema locale. Grazie mille per il vostro aiuto.
Il codice in cui il programma è bloccato
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
engine = None
db_session = None
Base = declarative_base()
def init_engine(uri, **kwards):
global engine
engine = create_engine(uri, **kwards)
return engine
def init_db():
global db_session
db_session = scoped_session(sessionmaker(bind=engine))
# import all modules here that might define models so that
# they will be registered properly on the metadata. Otherwise
# you will have to import them first before calling init_db()
import models
Base.metadata.create_all(engine)
è ci vuole essere 4 '' //// dopo ' sqlite: 'o solo 3? Anche '/ tmp/ate.db' significa che è memorizzato in'/tmp' e non 'tmp'. A meno che tu non sia chroot, ovviamente. –
Significava 4. Penso che sia il problema del mio ambiente locale perché può essere eseguito nell'altro computer e server. Tuttavia, non so cosa mi manca nel mio portatile. – user2677756
Può valere la pena fornire il codice attorno al punto in cui la traccia dello stack punta a –