Win7安装Web.py,UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal not in

突然想看看Webpy, 在网上看到一个篇:在windows下如何快速搭建web.py开发框架

http://www.cnblogs.com/dolphin0520/archive/2013/10/15/3343617.html

但是从github上下载下来后,安装出错:

$ python setup.py install
Traceback (most recent call last):
  File "setup.py", line 6, in <module>
    from web import __version__
  File "c:\Python27\webpy-webpy-0.37\web\__init__.py", line 14, in <module>
    import utils, db, net, wsgi, http, webapi, httpserver, debugerror
  File "c:\Python27\webpy-webpy-0.37\web\wsgi.py", line 12, in <module>
    import httpserver
  File "c:\Python27\webpy-webpy-0.37\web\httpserver.py", line 4, in <module>
    from SimpleHTTPServer import SimpleHTTPRequestHandler
  File "c:\Python27\lib\SimpleHTTPServer.py", line 27, in <module>
    class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
  File "c:\Python27\lib\SimpleHTTPServer.py", line 208, in SimpleHTTPRequestHan
ler
    mimetypes.init() # try to read system mime.types
  File "c:\Python27\lib\mimetypes.py", line 358, in init
    db.read_windows_registry()
  File "c:\Python27\lib\mimetypes.py", line 258, in read_windows_registry
    for subkeyname in enum_types(hkcr):
  File "c:\Python27\lib\mimetypes.py", line 249, in enum_types
    ctype = ctype.encode(default_encoding) # omit in 3.x!
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal
not in range(128)

各种搜索找不到解决方案,没办法,自己打开Webpy的setup.py文件一看,原来就一个version的问题

setup.py

#!/usr/bin/env python

# ...

from distutils.core import setup
from web import __version__

setup(name='web.py',
      version=__version__,
      description='web.py: makes web apps',
      author='Aaron Swartz',
      author_email='me@aaronsw.com',
      maintainer='Anand Chitipothu',
      maintainer_email='anandology@gmail.com',
      url=' http://webpy.org/',
      packages=['web', 'web.wsgiserver', 'web.contrib'],
      long_description="Think about the ideal way to write a web app. Write the code to make it happen.",
      license="Public domain",
      platforms=["any"],
     )

明显from web import __version__ 找不到吗,手动给他设置一下,之后安装成功,下面是我手动该的:

#!/usr/bin/env python

# ...

from distutils.core import setup

setup(name='web.py',
      version='0.37',
      description='web.py: makes web apps',
      author='Aaron Swartz',
      author_email='me@aaronsw.com',
      maintainer='Anand Chitipothu',
      maintainer_email='anandology@gmail.com',
      url=' http://webpy.org/',
      packages=['web', 'web.wsgiserver', 'web.contrib'],
      long_description="Think about the ideal way to write a web app. Write the code to make it happen.",
      license="Public domain",
      platforms=["any"],
     )

好啦,安装成功,我是在Git Bash下装的,cmd没试,因为看到很多人说要用Cygwin


如果上面的看完你安装成功了,说名你是个新手,我也是个新手,那么我们该写hello world啦。代码满天飞,就不写啦,但是你运行又出错啦:

$ python hello.py
Traceback (most recent call last):
  File "hello.py", line 1, in <module>
    import web
  File "c:\Python27\lib\site-packages\web\__init__.py", line 14, in <module>
    import utils, db, net, wsgi, http, webapi, httpserver, debugerror
  File "c:\Python27\lib\site-packages\web\wsgi.py", line 12, in <module>
    import httpserver
  File "c:\Python27\lib\site-packages\web\httpserver.py", line 4, in <module>
    from SimpleHTTPServer import SimpleHTTPRequestHandler
  File "c:\Python27\lib\SimpleHTTPServer.py", line 27, in <module>
    class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
  File "c:\Python27\lib\SimpleHTTPServer.py", line 208, in SimpleHTTPRequestHand
ler
    mimetypes.init() # try to read system mime.types
  File "c:\Python27\lib\mimetypes.py", line 362, in init
    db.read_windows_registry()
  File "c:\Python27\lib\mimetypes.py", line 262, in read_windows_registry
    for subkeyname in enum_types(hkcr):
  File "c:\Python27\lib\mimetypes.py", line 249, in enum_types
    ctype = ctype.encode(default_encoding) # omit in 3.x!
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal
not in range(128)

如果你像我一样马虎,只能说我们都找错了地方,其实web.py的setup.py没有问题,你应该仔细看到最下面的error

  File "c:\Python27\lib\mimetypes.py", line 262, in read_windows_registry
    for subkeyname in enum_types(hkcr):
  File "c:\Python27\lib\mimetypes.py", line 249, in enum_types
    ctype = ctype.encode(default_encoding) # omit in 3.x!
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal
not in range(128)

是的,是编码问题,于是我们又搜索到了另一个人的解决方案

解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128

http://blog.csdn.net/mindmb/article/details/7898528

非常好,我们好像找到原因啦,但是他没有写的那么清楚,实际上你应该看下一个搜索结果:

setuptools,pip,install,UnicodeDecodeError: 'ascii' codec can't decode byte.原因和解决方案

http://blog.csdn.net/hugleecool/article/details/17996993

解决方法:打开C:\Python27\Lib下的 mimetypes.py 文件,找到大概256行(你可以用Notepad++的搜索功能)的

‘default_encoding = sys.getdefaultencoding()’。

在这行前面添加三行:

if sys.getdefaultencoding() != 'gbk':
	reload(sys)
	sys.setdefaultencoding('gbk')
default_encoding = sys.getdefaultencoding()

现在你可以python hello.py啦,经过不懈的努力的搜索,我们终于找到原因啦,看到下面的截图,恭喜你啦。(不想让你见笑,这是我的一次写python)


瞬间感慨网上贡献的重要!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是由于在Python编码过程中遇到了无法解码的字节序列导致的。根据引用\[1\]和引用\[2\]的报错信息,可以看出错误的具体内容是"'ascii' codec can't decode byte 0x8e in position 0: ordinal not in range(128)"。这个错误通常发生在尝试将非ASCII字符解码为ASCII字符时。 根据引用\[3\]中的描述,你已经尝试了一些解决方法,如在open函数中添加encoding参数为'utf8',以及设置Python的默认编码方式为utf8。然而,这些方法并没有解决你的编码问题。 为了解决这个问题,你可以尝试以下几种方法: 1. 确保你的代码文件本身的编码方式与你尝试解码的字符的编码方式一致。可以通过在代码文件的开头添加以下注释来指定编码方式:`# -*- coding: utf-8 -*-`,其中utf-8可以替换为你需要的编码方式。 2. 在使用open函数打开文件时,指定正确的编码方式。例如,使用`open(filename, encoding='utf-8')`来打开文件并指定编码方式为utf-8。 3. 如果你在处理字符串时遇到了编码问题,可以尝试使用字符串的encode()方法将其转换为字节序列,或者使用decode()方法将字节序列转换为字符串。确保在转换过程中指定正确的编码方式。 希望这些方法能够帮助你解决UnicodeDecodeError的问题。如果问题仍然存在,请提供更多的上下文信息,以便我能够给出更具体的建议。 #### 引用[.reference_title] - *1* *2* [已解决UnicodeDecodeError: ‘asciicodec can‘t decode byte 0x8e in position 0: ordinal not in ...](https://blog.csdn.net/yuan2019035055/article/details/125752401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [UnicodeDecodeError: ‘asciicodec can‘t decode byte 0xef in position 0: ordinal not in range(128](https://blog.csdn.net/leviopku/article/details/124101115)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值