如何在win10中安装sc36和py36

时间:2017-05-18 04:02:14

标签: python scrapy twisted

最近我们想用python3重写我们的项目(现在它是py2.7)。我们主要使用scrapy从网站上获取数据,但我现在无法在py36中安装scrapy。

  Running setup.py install for Twisted ... error
Exception:
Traceback (most recent call last):
  File "e:\python_envs\crawler36\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 0xd5 in position 24: invalid continuation byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "e:\python_envs\crawler36\lib\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "e:\python_envs\crawler36\lib\site-packages\pip\commands\install.py", line 342, in run
    prefix=options.prefix_path,
  File "e:\python_envs\crawler36\lib\site-packages\pip\req\req_set.py", line 784, in install
    **kwargs
  File "e:\python_envs\crawler36\lib\site-packages\pip\req\req_install.py", line 878, in install
    spinner=spinner,
  File "e:\python_envs\crawler36\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess
    line = console_to_str(proc.stdout.readline())
  File "e:\python_envs\crawler36\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 0xd5 in position 24: invalid continuation byte
似乎问题是扭曲的。我试图安装twis​​ted也得到了同样的例外。其他人告诉我安装twis​​ted.whl,但我在网上找不到这个文件。 请帮忙。

1 个答案:

答案 0 :(得分:2)

来自GitHub上Twisted的Installation Requirements, 看起来它还不兼容Python 3.6:

  

要安装Twisted,您需要:

     

Python 2.7(完整功能)或3.3 / 3.4 / 3.5(功能子集)。

的确,在Python 3.6 changelog中,您可以看到:

  

PEP 528和PEP 529,Windows文件系统和控制台编码更改为UTF-8。

这会影响sys.__stdout__.encoding返回的值,这会导致您在堆栈跟踪中看到的UnicodeDecodeError

因此我建议您继续使用Python 3.5直到Twisted更新以支持Python 3.6。如果您真的不能,作为最后的手段尝试在非Windows环境(例如虚拟机)中设置项目,或者通过将PYTHONIOENCODING环境变量设置为使用的sys.__stdout__.encoding来解决此问题在升级到3.6之前返回。但它有缺点,它可能不起作用,无论如何可能还有其他不兼容性。