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

its*_*sy0 3 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\
Run Code Online (Sandbox Code Playgroud)

abc*_*ccd 8

该问题是在读取过程中在设置过程中引起的README.txt。在Windows中,默认编码为cp1252,但是该自述文件很可能使用UTF8编码。

错误消息告诉您cp1252编解码器无法解码字节0x9D的字符。浏览自述文件​​时,发现以下字符:(也称为“ RIGHT DOUBLE QUOTATION MARK”),其字节为0xE2 0x80 0x9D,其中包括有问题的字节。

您可以做的是:

  1. 此处下载软件包
  2. 解压缩包
  3. 打开setup.py
  4. 更改以下内容:

从:

with open('README.txt') as file:
    long_description = file.read()
Run Code Online (Sandbox Code Playgroud)

变成:

with open('README.txt', encoding="utf8") as file:
    long_description = file.read()
Run Code Online (Sandbox Code Playgroud)

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

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

  1. 在控制台中,运行 python setup.py install
  2. 大功告成!

由于setup.py脚本中没有实际的设置,因此您可以直接从GitHub克隆源文件夹,该程序包仍然可以正常工作。


And*_*own 6

pip install在 Windows 版本的 python 上也遇到了这个问题。解决办法是设置如下环境变量:

PYTHONUTF8=1
Run Code Online (Sandbox Code Playgroud)

如果安装完成后会影响您的正常开发,您可以将其取消。


小智 5

只需encoding="utf8"在“open('path', here)”中添加即可。

with open('path to csv file',  encoding="utf8") as csv_file:
Run Code Online (Sandbox Code Playgroud)


Sim*_*mon 1

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

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

python setup.py build
python setup.py install 
Run Code Online (Sandbox Code Playgroud)

或者从 PowerShell 运行:

python ./setup.py build
python ./setup.py install 
Run Code Online (Sandbox Code Playgroud)