flask pip utf-8 编码报错处理

今天在公司里安装flask的时候,一切正常,可以正常import flask

但是回到家里,却莫名其妙的报错了。

Exception:
Traceback (most recent call last):
  File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str
    return s.decode(sys.__stdout__.encoding)
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb6 in position 33: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\basecommand.py", line 216, in main
    status = self.run(options, args)
  File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\commands\install.py", line 342, in run
    prefix=options.prefix_path,
  File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\req\req_set.py", line 784, in install
    **kwargs
  File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\req\req_install.py", line 878, in install
    spinner=spinner,
  File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess
    line = console_to_str(proc.stdout.readline())
  File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str
    return s.decode(‘utf_8‘)
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb6 in position 33: invalid start byte

报错大概是这样的,总之我开始是没怎么看报错信息,然后去百度查了一大堆。结果发现除了有一位csdn的博主:nankaizhl的报错可能和我差不多,其他就没怎么找到,包括stackoverflow。

也不知道今天是吃错药了还是咋的,我竟然没有立即放弃,按照nankaizhl的一些说明,改了以后发现没有用,直接报错了。

python3里面好像都没有reload这个函数了。

难道我就只能在公司电脑里学python?

我只能硬着头皮去啃报错的traceback了。

我们仔细看下。

python先是在解决某个异常后,又发现了一个异常。有意思的是,另外一个异常,往回追溯,回到了同一个文件。

File "c:\users\ruby\appdata\local\programs\python\python36\lib\site-packages\pip\compat\__init__.py"

没办法,只能带着恐惧来看python安装包里的py代码了。但python解释器很有好的给出了报错行数。我把相关行截出来。
if sys.version_info >= (3,):
    def console_to_str(s):
        try:
            return s.decode(sys.__stdout__.encoding) #
        except UnicodeDecodeError:
            return s.decode(‘utf-8‘) #

报错的2个#的那一行。

这个语法是一个异常处理的,难怪会报错来自同一个文件,这里很简单的说明了如果不能正常编码的话,就用utf-8编码。

然后看traceback里的信息,表明,即使用utf-8编码也不行,对于中国电脑来收,一般就是路径里面有中文。

虽说我们也可以找一下哪些路径有中文,但我没这个水平。

很自然的一个修改的是,把这个改成下面这样,用gbk的中文编码。

if sys.version_info >= (3,):
    def console_to_str(s):
        try:
            return s.decode(sys.__stdout__.encoding)
        except UnicodeDecodeError:
            return s.decode(‘gbk‘) #

未免改后有问题,我在后面加了一个#。

结果正常了。

补充一点还可能出问题的是,pip安装flask报错后,你再次pip install flask,会返回你安装成功的信息。

好像也不是安装成功,更准确的说法是没有报错,但这时你import flask会报错,如下:

我这里的报错显示的很清晰,没有markupsafe._compat这个module。

所以我本来是想先pip uninstall flask,但是很遗憾,这样并不能把MarkupSafe卸载掉。

你需要pip uninstall MarkupSafe才行,然后把上面的编码改成gbk后,再pip install flask。

这样就没问题了,然后我们就一起去学习flask吧。

时间: 2024-10-23 20:22:52

flask pip utf-8 编码报错处理的相关文章

python 编码报错问题 'ascii' codec can't encode characters 解决方法

python在安装时,默认的编码是ascii, 当程序中出现非ascii编码时,python的处理常常会报这样的错 'ascii' codec can't encode characters python没办法处理非ascii编码的, 此时需要自己设置将python的默认编码,一般设置为utf8的编码格式. 查看python的默认编码 print sys.getdefaultencoding() 解决方法一(已通过验证,顺带也解决了我之前字符前一直加u的问题) 在python安装目录下,进入\P

centos6,python3,通过pip安装pycurl出现报错提示

Centos6.7系统,python3.6.7,通过 pip 安装pycurl出现报错: __main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory: 'curl-config': 'curl-config' 系统已经安装了curl,出现此错误提示一般是因为没有安装对应的开发库,解决方法: yum -y install libcurl-devel 原文地址:https://

Python pip安装Scrapy,报错Twisted

Scrapy依赖的包有如下:lxml:一种高效的XML和HTML解析器w3lib:一种处理URL和网页编码多功能辅助twisted:一个异步网络框架cryptography 和 pyOpenSSL:处理各种网络级安全需求——————————————————————————1.先运行一次pip安装 pip install Scrapy2.安装完一次过后,基本除了报错twisted没安装成功以外,其他依赖包应该是安装好了. 然后自行下载twisted,注意:要对应你的python版本号和电脑系统的位

pip 安装第三方库报错

最近重装电脑之后,用pip命令安装第三方库,结果报错如下 仔细观察之后,发现黄色字体提示当前pip版本过低,应用高版本的pip 在cmd中输入python -m pip install --upgrade pip 升级当前pip版本之后再重新使用命令行安装第三方库 原文地址:https://www.cnblogs.com/manaizhuang/p/9283648.html

python pip install XXX出现报错问题

重装Anacondas后,将pip 和python.exe路径加入到环境变量后直接在cmd窗口进行pip 操作,报错如下 报错内容为: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.  pip操作是直接联网的,需要SSL端口加密连接到安装包网址,直接在CMD下运行自带是没有SSL的, 解决方法: 找到Anacondas Prompt,

pip使用douban源报错解决

报错: Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', gaierror(8, 'nodename nor servname provided, or not known'))': /simple/pyopenssl/1 [global] timeout = 60 index-url

关于网站编码显示问题 效果是 访问 带有中文注释的sass文件出现编码报错。

首先查看环境变量 export declare -x HOME="/home/piperck" declare -x LANG="en_US.UTF-8" declare -x LC_CTYPE="en_US.UTF-8" 格式:declare -x var 格式:typeset -x var 格式:export var 将变量var设置成环境变量,这样在随后的脚本和程序中可以使用. locale的设定及LANG.LC_CTYPE.LC_ALL环

转:urllib.request.urlopen字符编码报错

错误内容:UnicodeEncodeError: 'ascii' codec can't encode characters in position 28-29: ordinal not in range(128) 1.以为是代码错误,检查tab符,并没有问题, 2.将代码粘贴到空白项目中去,发现还是不对. 3.百度:http://blog.csdn.net/olanlanxiari/article/details/48201231 1.Python在安装时,默认的编码是ascii,当程序中出现

使用pip安装第三方库报错记录

今天在使用pycharm导入第三方库的时候,报了好多超时错误,还有标题中的找不到版本,应该是网络的原因,记录下解决的办法: raise ReadTimeoutError(self._pool, None, 'Read timed out.')pip._vendor.requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read ti