UnicodeDecodeError:'charmap'编解码器无法解码位置X中的字节0x9d:字符映射到<undefined>

时间:2018-04-03 23:27:25

标签: python windows pip

当我尝试使用pip安装StringGenerator时,系统会提示我出现此错误:

C:\Users\Administrator> pip install StringGenerator

Collecting StringGenerator 
Using cached StringGenerator-0.3.0.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\ADMINI~1\AppData\Local\Temp\2\pip-build-mdvrj2cf\StringGenerator\setup.py", line 7, in <module>
    long_description = file.read()
  File "c:\users\administrator\appdata\local\programs\python\python36-32\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 1264: character maps to <undefined>

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\ADMINI~1\AppData\Local\Temp\2\pip-build-mdvrj2cf\StringGenerator\

3 个答案:

答案 0 :(得分:2)

在阅读README.txt时,在设置过程中会出现此问题。在Windows中,默认编码为cp1252,但该自述文件很可能以UTF8编码。

错误消息告诉您cp1252编解码器无法解码字节为0x9D的字符。当我浏览自述文件​​时,我发现了这个字符:(也称为:&#34;右双引号和#34;),其字节为0xE2 0x80 0x9D ,其中包括有问题的字节。

你能做的是:

  1. 下载包here
  2. 解压缩包
  3. 打开setup.py
  4. 更改以下内容:
  5. 自:

    with open('README.txt') as file:
        long_description = file.read()
    

    转变为:

    with open('README.txt', encoding="utf8") as file:
        long_description = file.read()
    

    这将使用正确的编码打开文件。

    或者您可以完全删除这两行,并在long_description=long_description,内的第18行删除setup()

    1. 在控制台中,运行python setup.py install
    2. 你已经完成了!
    3. 由于setup.py脚本中没有实际设置,您可以直接从GitHub克隆源文件夹,该软件包仍然可以正常运行。

答案 1 :(得分:0)

转到https://pypi.python.org/pypi/StringGenerator/0.3.0并下载最新版本(或本例中的源代码),解压缩.gz文件,然后解压缩.tar文件。

接下来进入StringGenerator-0.2.0文件夹并打开终端并运行:

python setup.py build
python setup.py install 

或者从PowerShell运行:

python ./setup.py build
python ./setup.py install 

答案 2 :(得分:0)

只需在“ open('path',here)”(开放('路径',此处))中添加encoding="utf8"

with open('path to csv file',  encoding="utf8") as csv_file: