我正在浏览构建Python / Flask应用程序的在线教程。在我安装Postgres并搞乱我的数据库之前,我可以从命令行启动我的应用程序没问题。现在,每次重新启动命令提示符时,我都必须重新定义APP_SETTINGS和DATABASE_URL变量。在我改进变量之后,应用程序工作正常,但我知道这不是它应该工作的方式。错误如下:
Traceback (most recent call last):
File "app.py", line 12, in <module>
app.config.from_object(os.environ['APP_SETTINGS'])
File "C:\envs\acme\lib\os.py", line 423, in __getitem__
return self.data[key.upper()]
KeyError: 'APP_SETTINGS'
然后我将使用&#34; set&#34;重新定义变量:
set APP_SETTINGS=config.DevelopmentConfig
以下是我用于app.py和config.py
的代码config.py:
import os
# default config
class BaseConfig(object):
DEBUG = False
SECRET_KEY = 'secret key'
SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']
class DevelopmentConfig(BaseConfig):
DEBUG = True
class ProductionConfig(BaseConfig):
DEBUG = False
app.py
import os
app.config.from_object(os.environ['APP_SETTINGS'])
上面在config.py文件中列出的DATABASE_URL变量也是如此。我也得到一个KEYERROR,必须使用&#34; set&#34;重新定义变量。以及在下面输入我的用户名和密码:
set DATABASE_URL=postgres://username:password@localhost/discover_flask_dev
我使用的是Windows 8和Python 2.7。我在我的环境中安装了这些工具:
Flask==0.10.1
Flask-SQLAlchemy==2.0
Jinja2==2.7.3
MarkupSafe==0.23
SQLAlchemy==0.9.8
Werkzeug==0.9.6
gunicorn==19.1.1
ipython==2.3.0
itsdangerous==0.24
psycopg2==2.5.2
pyreadline==2.0
我假设有一种解决上述问题的基本方法。请指教。谢谢!
答案 0 :(得分:1)
您的关键问题似乎是“每次重新启动命令提示符时,我都必须重新定义APP_SETTINGS和DATABASE_URL变量”。
从this superuser answer开始,看起来有两个环境变量命令:SET(在命令窗口关闭时恢复)和SETX(命令窗口关闭后仍然存在)。
而不是set DATABASE_URL=postgres://username:password@localhost/discover_flask_dev
尝试使用
setx DATABASE_URL "postgres://username:password@localhost/discover_flask_dev"
请注意语法略有不同:SETX使用双引号".."
,并且不使用等于=