在 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 文件中解析的参数设置环境变量的错误的更多相关文章

  1. 用WIN7系统IIS的提示:数据库连接出错,请检查Conn.asp文件中的数据库参数设置

    我用科讯的从4.0开始,去年开始很少用科讯做新站了,今天拿来做一下,结果悲剧了,数据库路径老是不对,百度一番又一番的,,最后终于给度娘解决了.分享出来给遇到同样的问题的人. 用WIN7系统IIS的注意 ...

  2. linux环境变量设置 以及 source命令 Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程 Linux 设置环境变量

    定制环境变量  环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell.对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell.环境变量文件:/etc/profil ...

  3. Linux中使用export命令设置环境变量

    Linux export 命令 2011-08-31 22:36:39|  分类: 命令总结|举报|字号 订阅     功能说明:设置或显示环境变量. ######################## ...

  4. 00006 - Linux中使用export命令设置环境变量

    功能说明:设置或显示环境变量. #################################################################################### ...

  5. 关于Lumen / Laravel .env 文件中的环境变量是如何生效的

    .env 文件包含默认环境变量,我们还可自定义其他任何有效的变量,并可通过  调用 env() 或 $_SERVER 或 $_ENV  来获取该变量.那么env()是如何加载到这些变量的呢?在Lume ...

  6. htaccess文件中RewriteRule 规则参数介绍

    .htaccess 文件 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d Rew ...

  7. 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] ...

  8. Maven项目中,系统设置的CLASSPATH环境变量问题

    在Maven项目中,系统的CLASSPATH环境变量失效了吗?在用Maven开发登录网站时,servlet-api出现错误,jdbc也出现错误,都是ClassNotFoundException,但这两 ...

  9. 读取xml文件中的配置参数实例_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...

随机推荐

  1. oracle中job无法正常运行,如何排查

    1.生产环境Oracle中的job无法正常运行 select * from dba_jobs_running;(查看正在运行的job) 2.select * from dba_jobs(查看job历史 ...

  2. Linux命令大全之查看登陆用户信息

    1,w +回车 2.who +回车 3.last+回车 4.lastlog+回车

  3. http强制缓存、协商缓存、指纹ETag详解

    目录 实操目录及步骤 缓存分类 强制缓存 对比缓存 指纹 Etag 摘要及加密算法 缓存总结 每个浏览器都有一个自己的缓存区,使用缓存区的数据有诸多好处,减少冗余的数据传输,节省网络传输.减少服务器负 ...

  4. 乘风破浪,Windows11设计和开发指导,全新图标字体和云母材质

    Windows11全新的布局设计 Windows 11全新的布局设计已设计为支持现代应用体验.渐进的圆角.嵌套元素和一致的排水沟相结合,营造出柔和.平静.平易近人的效果,强调目的的统一和易用性. ht ...

  5. 28、python3.7(windows)将ORACLE11gR2中的数据取出写入excel表

    28.1.下载python的离线扩展模块: 1.windows下python的离线扩展模块下载地址为: https://www.lfd.uci.edu/~gohlke/pythonlibs/ 提示: ...

  6. 9.5、zabbix高级操作(1)

    在zabbix-web中删除之前所有监控的主机: 1.zabbix自动发现配置: zabbix-server通过扫描指定范围的ip地址发现zabbix-agent并自动添加监控主机,适用于zabbix ...

  7. css 设置小知识点记录

    1.消除控件与控件之间的边界 /* 公共样式 用于消除控件与控件之间的边界 */ *{ margin:0; padding:0} 2.设置背景图片大小与控件大小一致 #frame_top{ min-h ...

  8. [Kick Start] 2021 Round B

    题目:Kick Start 2021 Round-B . Increasing Substring 输出字符串中每个字符的最长 Increasing Substring 的长度,非常简单的动态规划问题 ...

  9. 深入理解 Go Map

    文章参考:Go语言设计与实现3.3 哈希表 哈希表的意义不言而喻,它能提供 O(1) 复杂度的读写性能,所以主流编程语言中都内置有哈希表. 哈希表的关键在于哈希函数, 好的哈希函数能减少哈希碰撞,提供 ...

  10. CentOS-自定义SFTP用户及目录

    ftp功能说明:通过SSH启动CentOS的sftp功能 创建用户组及用户(sftp可变) $ groupadd sftp $ useradd -g sftp -s /sbin/nologin -d ...