Heroku python控制台应用程序模块ImportError

时间:2013-02-14 20:12:45

标签: python postgresql heroku

我在尝试从heroku python控制台访问PostgreSQL时遇到了一个问题(第一次尝试)。

首先,我使用$ heroku run python

启动python

然后我尝试使用>>> from app import db加载db模块,此操作返回:

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

我有一个运行python的web dyno有app = Flask(__name__),除此之外,我不知道我应该提供什么其他细节以便更清楚地了解这个问题。

1 个答案:

答案 0 :(得分: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 shell时遇到错误的原因有两个:

  1. 我导入目标的* .py不在根目录下,我告诉shell查看错误的地方
  2. 由于我导入的* .py未命名为app.py(我问from app import db),我还告诉shell查找错误文件
  3. 解决此问题的方法是将我的* .py文件的路径附加到sys.path而不是from app import db,我们from my_filename_without_the_extenssion import db。对于摘要,shell收到了这些说明:

    >>> import sys
    >>> sys.path.append('path/to/my/file')
    >>> from my_filename_without_the_extenssion import db
    >>> # to test if everythings ok
    >>> db