解决 Flask 项目无法用 .env 文件中解析的参数设置环境变量的错误
在 Windows 上启动 Flask 项目时,工作目录有 UTF-8 编码的 .env 文件,里面配置的环境变量在 Python2 中识别为 Unicode 类型,导致下述错误:
* Serving Flask app "bootstrap" (lazy loading)
* Environment: development
* Debug mode: on
* Restarting with stat
Traceback (most recent call last):
File "bootstrap.py", line 40, in <module>
app.run(host=str(settings.DEV_HOST), port=settings.DEV_PORT)
File "D:\Python27\lib\site-packages\flask\app.py", line 943, in run
run_simple(host, port, self, **options)
File "D:\Python27\lib\site-packages\werkzeug\serving.py", line 812, in run_simple
reloader_type)
File "D:\Python27\lib\site-packages\werkzeug\_reloader.py", line 275, in run_with_reloader
sys.exit(reloader.restart_with_reloader())
File "D:\Python27\lib\site-packages\werkzeug\_reloader.py", line 132, in restart_with_reloader
close_fds=False)
File "D:\Python27\lib\subprocess.py", line 172, in call
return Popen(*popenargs, **kwargs).wait()
File "D:\Python27\lib\subprocess.py", line 394, in __init__
errread, errwrite)
File "D:\Python27\lib\subprocess.py", line 644, in _execute_child
startupinfo)
TypeError: environment can only contain strings
遇到这种情况,只需对 werkzeug 项目做个小的修改即可。Diff 文件如下所示:
diff --git a/werkzeug/_reloader.backup.py b/werkzeug/_reloader.py
# index 0d23dba..2698040 100644
# --- a/_reloader.backup.py
# +++ b/_reloader.py
# @@ -117,16 +117,20 @@ class ReloaderLoop(object):
# while 1:
# _log('info', ' * Restarting with %s' % self.name)
# args = _get_args_for_reloading()
# - new_environ = os.environ.copy()
# - new_environ['WERKZEUG_RUN_MAIN'] = 'true'
# + old_environ = os.environ.copy()
# + new_environ = {
# + 'WERKZEUG_RUN_MAIN': 'true'
# + }
#
# # a weird bug on windows. sometimes unicode strings end up in the
# # environment and subprocess.call does not like this, encode them
# # to latin1 and continue.
# if os.name == 'nt' and PY2:
# - for key, value in iteritems(new_environ):
# + for key, value in iteritems(old_environ):
# if isinstance(value, text_type):
# - new_environ[key] = value.encode('iso-8859-1')
# + new_environ[key.encode('iso-8859-1')] = value.encode('iso-8859-1')
# + else:
# + new_environ[key] = value
#
# exit_code = subprocess.call(args, env=new_environ,
# close_fds=False)
解决 Flask 项目无法用 .env 文件中解析的参数设置环境变量的错误的更多相关文章
- 用WIN7系统IIS的提示:数据库连接出错,请检查Conn.asp文件中的数据库参数设置
我用科讯的从4.0开始,去年开始很少用科讯做新站了,今天拿来做一下,结果悲剧了,数据库路径老是不对,百度一番又一番的,,最后终于给度娘解决了.分享出来给遇到同样的问题的人. 用WIN7系统IIS的注意 ...
- linux环境变量设置 以及 source命令 Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程 Linux 设置环境变量
定制环境变量 环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell.对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell.环境变量文件:/etc/profil ...
- Linux中使用export命令设置环境变量
Linux export 命令 2011-08-31 22:36:39| 分类: 命令总结|举报|字号 订阅 功能说明:设置或显示环境变量. ######################## ...
- 00006 - Linux中使用export命令设置环境变量
功能说明:设置或显示环境变量. #################################################################################### ...
- 关于Lumen / Laravel .env 文件中的环境变量是如何生效的
.env 文件包含默认环境变量,我们还可自定义其他任何有效的变量,并可通过 调用 env() 或 $_SERVER 或 $_ENV 来获取该变量.那么env()是如何加载到这些变量的呢?在Lume ...
- htaccess文件中RewriteRule 规则参数介绍
.htaccess 文件 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d Rew ...
- IDEA 之 ERROR:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]
问题描述:在使用IDEA对JSTL进行测试时出现error:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core] ...
- Maven项目中,系统设置的CLASSPATH环境变量问题
在Maven项目中,系统的CLASSPATH环境变量失效了吗?在用Maven开发登录网站时,servlet-api出现错误,jdbc也出现错误,都是ClassNotFoundException,但这两 ...
- 读取xml文件中的配置参数实例_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...
随机推荐
- noip模拟9[斐波那契·数颜色·分组](洛谷模拟测试)
这次考试还是挺好的 毕竟第一题被我给A了,也怪这题太简单,规律一眼就看出来了,但是除了第一题,剩下的我只有30pts,还是菜 第二题不知道为啥我就直接干到树套树了,线段树套上一个权值线段树,然后我发现 ...
- Web 动画原则及技巧浅析
在 Web 动画方面,有一套非常经典的原则 -- Twelve basic principles of animation,也就是关于动画的 12 个基本原则(也称之为迪士尼动画原则),网上对它的解读 ...
- 【学习】自定义view
自定义控件其实很简单1/2 Canvas的使用 自定义控件其实很简单1/3 Shader与画布的旋转 自定义控件其实很简单2/3 view的测量 自定义控件其实很简单1/4 FontM ...
- 34.qt quick-Popup弹出窗口自定义
1.Popup介绍 Popup是一个弹出窗口的控件它的常用属性如下所示: anchors.centerIn : Object,用来设置居中在谁窗口中. closePolicy : enumeratio ...
- 从零实操基于WSL2 Docker部署Asp.Net Core项目
前言 平日在公司里都是基于阿里Teambition中的飞流进行Docker部署Api项目或服务,已经习惯了那一套成熟的操作流程,开发和部署确实快捷方便,但是还没在自己的电脑上进行操作过,特别是Wind ...
- 通过修改Host实现chrome同步
问题原因 : 中国的GW屏蔽了google服务,导致无法同步账号信息,这是一个很好的功能.可以同步书签,插件等! 跟chrome的版本号无关,设置hosts文件就能够正常运行(文件位置 : C:\Wi ...
- 关于asp.net中Repeater控件的一些应用
在Asp.net中,我是比较喜欢用Repeater这个控件,刚刚遇到的一个问题,怎么实现单击 <asp:LinkButton>,通过后台的单击事件获取同一行数据中的其他数据(对象). 1, ...
- 关于PHP导出数据超时的优化
一般情况下,导出超时可能都是以下三种情况: 一.sql语句复杂,查询时间过长: 二.处理查询后数据逻辑冗余: 三.数据量过大导致响应超时. 接下来分别给出这三种情况的优化建议. 一.sql语句复杂,查 ...
- 【spring源码系列】之【Bean的属性赋值】
每次进入源码的世界,就像完成一场奇妙的旅行! 1. 属性赋值概述 上一篇讲述了bean实例化中的创建实例过程,实例化后就需要对类中的属性进行依赖注入操作,本篇将重点分析属性赋值相关流程.其中属性赋值, ...
- shiro框架整合ssm框架
下面我通过一个web的maven项目来讲解如何将shiro整合ssm框架,具体结构如下图 一.引入依赖的jar包 <?xml version="1.0" encoding=& ...