Heroku Python 控制台应用模块导入错误
我在尝试从Heroku的Python控制台访问PostgreSQL时遇到了一个问题(这是我第一次尝试)。
首先,我通过输入 $ heroku run python
来启动Python。
然后,我试着用 >>> from app import db
来加载数据库模块,但这个操作返回了:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named app
我有一个正在运行Python的网络动态(web dyno),它的代码是 app = Flask(__name__)
。除此之外,我不知道还需要提供什么其他信息来更好地说明这个问题。
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 交互环境时出错的原因有两个:
- 我想导入的 *.py 文件不在根目录下,我告诉终端去找一个错误的地方。
- 因为我导入的 *.py 文件不是叫 app.py(而我却在用
from app import db
),所以我也在告诉终端去找一个错误的文件。
解决这个问题的方法是把我的 *.py 文件的路径添加到 sys.path 中,然后用 from my_filename_without_the_extension import db
代替 from app 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