0

heroku pythonコンソールからPostgreSQLにアクセスしようとしたときに問題が発生しました(最初の試行)。

まず、Pythonを使用して起動します$ heroku run python

次に、dbモジュールをでロードしようとすると>>> from app import db、このアクションは次のようになります。

Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
ImportError: No module named app

私はPythonを実行している1つのWebdynoを持っていますがapp = Flask(__name__)、それ以外に、問題にさらに光を当てるために他にどのような詳細を提供する必要があるのか​​わかりません。

4

1 に答える 1

1

ターミナルで実験した後、自分の変数が何であるかを知る方法が実際にはないことが明らかになりました。そのmain.pyため、ターミナルからアプリの主要部分を次のようにロードしました。

>>> import os
>>> from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash
>>> from flask.ext.sqlalchemy import SQLAlchemy

>>> # create the application
>>> app = Flask(__name__)
>>> app.config.from_object(__name__)
>>> app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', 'some-url.com')
>>> db = SQLAlchemy(app)

そしてそれ以来、私はdb意図したとおりにオブジェクトにアクセスすることができました。

編集-問題は以下で完全に解決されました。

したがって、アプリのコードをPythonシェルにインポートしようとしたときにエラーが発生した理由は、次の2つです。

  1. インポートのターゲットである*.pyはルートディレクトリにありませんでした。シェルに間違った場所を探すように指示していました。
  2. インポートした*.pyはapp.pyという名前ではなかったので(そして私が求めていたので)、間違ったファイルfrom app import dbを探すようにシェルに指示していました。

この問題を解決する方法は、*。pyファイルのパスをsys.pathに追加し、代わりにfrom app import dbusを追加することでしたfrom my_filename_without_the_extenssion import db。要約すると、シェルは次の指示を受け取りました。

>>> import sys
>>> sys.path.append('path/to/my/file')
>>> from my_filename_without_the_extenssion import db
>>> # to test if everythings ok
>>> db
于 2013-02-15T09:22:14.143 に答える