我在Windows 8.1机器上安装了一个干净的新版python。 我尝试了Python 2.7.8和Python 3.4。
我从命令提示符运行python get-pip.py - 这正确地安装了pip。我是从here获得的。
之后我运行pip install mongo-connector。这会下载mongo连接器并抛出这样的异常:
Downloading/unpacking mongo-connector
Downloading mongo-connector-1.3.tar.gz
Running setup.py (path:c:\users\imon~1\appdata\local\temp\pip_build_èimon\mong
o-connector\setup.py) egg_info for package mongo-connector
Cleaning up...
Exception:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File "C:\Python27\lib\site-packages\pip\commands\install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundl
e=self.bundle)
File "C:\Python27\lib\site-packages\pip\req.py", line 1234, in prepare_files
req_to_install.assert_source_matches_version()
File "C:\Python27\lib\site-packages\pip\req.py", line 464, in assert_source_ma
tches_version
% (display_path(self.source_dir), version, self))
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8a in position 55: ordinal
not in range(128)
Traceback (most recent call last):
File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "C:\Python27\lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "C:\Python27\Scripts\pip.exe\__main__.py", line 9, in <module>
File "C:\Python27\lib\site-packages\pip\__init__.py", line 185, in main
return command.main(cmd_args)
File "C:\Python27\lib\site-packages\pip\basecommand.py", line 161, in main
text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8a in position 70: ordinal
not in range(128)
如果是Python 3.4,它会抛出:
Downloading/unpacking mongo-connector
Downloading mongo-connector-1.3.tar.gz
Cleaning up...
Exception:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundl
e=self.bundle)
File "C:\Python34\lib\site-packages\pip\req.py", line 1229, in prepare_files
req_to_install.run_egg_info()
File "C:\Python34\lib\site-packages\pip\req.py", line 292, in run_egg_info
logger.notify('Running setup.py (path:%s) egg_info for package %s' % (self.s
etup_py, self.name))
File "C:\Python34\lib\site-packages\pip\log.py", line 102, in notify
self.log(self.NOTIFY, msg, *args, **kw)
File "C:\Python34\lib\site-packages\pip\log.py", line 162, in log
consumer.write(write_content)
File "C:\Python34\lib\site-packages\pip\_vendor\colorama\ansitowin32.py", line
116, in write
self.write_and_convert(text)
File "C:\Python34\lib\site-packages\pip\_vendor\colorama\ansitowin32.py", line
143, in write_and_convert
self.write_plain_text(text, cursor, len(text))
File "C:\Python34\lib\site-packages\pip\_vendor\colorama\ansitowin32.py", line
148, in write_plain_text
self.wrapped.write(text[start:end])
File "C:\Python34\lib\encodings\cp437.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u0160' in position
70: character maps to <undefined>
Traceback (most recent call last):
File "C:\Python34\lib\runpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "C:\Python34\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Python34\Scripts\pip.exe\__main__.py", line 9, in <module>
File "C:\Python34\lib\site-packages\pip\__init__.py", line 185, in main
return command.main(cmd_args)
File "C:\Python34\lib\site-packages\pip\basecommand.py", line 168, in main
logger.fatal('Storing debug log for failure in %s' % log_file_fn)
File "C:\Python34\lib\site-packages\pip\log.py", line 111, in fatal
self.log(self.FATAL, msg, *args, **kw)
File "C:\Python34\lib\site-packages\pip\log.py", line 162, in log
consumer.write(write_content)
File "C:\Python34\lib\site-packages\pip\_vendor\colorama\ansitowin32.py", line
116, in write
self.write_and_convert(text)
File "C:\Python34\lib\site-packages\pip\_vendor\colorama\ansitowin32.py", line
140, in write_and_convert
self.write_plain_text(text, cursor, start)
File "C:\Python34\lib\site-packages\pip\_vendor\colorama\ansitowin32.py", line
148, in write_plain_text
self.wrapped.write(text[start:end])
File "C:\Python34\lib\encodings\cp437.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u0160' in position
42: character maps to <undefined>
====
在没有任何参数的情况下运行pip会抛出这个:
Traceback (most recent call last):
File "C:\Python34\lib\runpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "C:\Python34\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Python34\Scripts\pip.exe\__main__.py", line 9, in <module>
File "C:\Python34\lib\site-packages\pip\__init__.py", line 177, in main
cmd_name, cmd_args = parseopts(initial_args)
File "C:\Python34\lib\site-packages\pip\__init__.py", line 148, in parseopts
parser.print_help()
File "C:\Python34\lib\optparse.py", line 1646, in print_help
file.write(self.format_help())
File "C:\Python34\lib\encodings\cp437.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u0160' in position
1235: character maps to <undefined>
在Python 2.7.8中运行pip会抛出这个:
Traceback (most recent call last):
File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "C:\Python27\lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "C:\Python27\Scripts\pip.exe\__main__.py", line 9, in <module>
File "C:\Python27\lib\site-packages\pip\__init__.py", line 177, in main
cmd_name, cmd_args = parseopts(initial_args)
File "C:\Python27\lib\site-packages\pip\__init__.py", line 148, in parseopts
parser.print_help()
File "C:\Python27\lib\optparse.py", line 1670, in print_help
file.write(self.format_help().encode(encoding, "replace"))
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8a in position 1210: ordin
al not in range(128)
这种情况从未发生在我使用的任何其他机器上。我发现了许多类似的问题,但没有一个问题涉及我需要对我的案例做些什么。
This thread告诉我运行chcp 65001.当我这样做并且之后运行pip时,它会抛出这个:
C:\Python27\Scripts>pip
Traceback (most recent call last):
File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "C:\Python27\lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "C:\Python27\Scripts\pip.exe\__main__.py", line 9, in <module>
File "C:\Python27\lib\site-packages\pip\__init__.py", line 177, in main
cmd_name, cmd_args = parseopts(initial_args)
File "C:\Python27\lib\site-packages\pip\__init__.py", line 148, in parseopts
parser.print_help()
File "C:\Python27\lib\optparse.py", line 1670, in print_help
file.write(self.format_help().encode(encoding, "replace"))
LookupError: unknown encoding: cp65001
根据this thread,可能问题是,用户名是“Šimon”,包含一个unicode字符。但是,我不知道,该怎么办。我不是要将任何python文件编辑为不同的编码,这似乎只是一个非常困难和临时的解决方法。 (windows为我做了用户名 - 另一个糟糕的想法,不让我为我选择用户名。)
答案 0 :(得分:2)
因为python不知道“cp65001”是“utf-8”的别名 你可以在windows中设置它:
set PYTHONIOENCODING=utf-8
答案 1 :(得分:1)
这是一种解决方法,而不是问题的解决方案。我在Windows中的用户名自动为“Šimon”。 “Š”是一个问题。我找到了重命名用户名的方法,但之后很多事情都停止了。 Windows注册表充满了散落在该地方的“Šimon”,必须使用特殊工具一次性重命名它们,并且用户文件夹中的许多链接停止工作。包括%APPDATA%和其他类似文件夹 - 因此许多软件停止工作,在启动时抛出意外错误,包括Dropbox,XMind等。
因此,如果问题是从根本上解决的话会很好,因为这种解决方法很难正确执行,但仍然无法解决问题。
答案 2 :(得分:0)
这是一个pip bug,两年后仍未正确修复。见https://github.com/pypa/pip/issues/1291。按照@YRUsoDiao的建议设置PYTHONIOENCODING不会解决问题,因为env var只影响stdin / stdout / stderr。现在,在运行&#34; pip install&#34;之前,您必须更改您的Windows帐户才能使用CP65001(UTF-8)。如果setup.py模块包含除纯ASCII之外的utf-8序列。