从Python 3.5.1升级到3.6:SyntaxError:' yield'内部异步功能

时间:2017-02-22 17:06:40

标签: python python-2.7 python-3.x

我在Windows 8.1上,想要从Python 3.5.1升级到Python 3.6。我目前使用Anaconda3并拥有python 2.7和python 3.5的虚拟环境。

我使用了以下升级方式:  在升级之前 -

C:\Users\thisuser>python --version 
Python 3.5.1 :: Anaconda 2.4.1 (64-bit)

使用以下方式完成升级:

C:\Users\thisuser>conda install python=3.6

上述内容成功完成,进度已完成。

但在此之后,由于以下问题,我无法运行任何python代码:

C:\Users\thisuser>python
Failed to import the site module
Traceback (most recent call last):
  File "C:\Users\thisuser\AppData\Local\Continuum\Anaconda3\lib\site.py", line 73, in <module
>
    import os
  File "C:\Users\thisuser\AppData\Local\Continuum\Anaconda3\lib\os.py", line 652, in <module>

    from _collections_abc import MutableMapping
  File "C:\Users\thisuser\AppData\Local\Continuum\Anaconda3\lib\_collections_abc.py", line 64

    async def _ag(): yield
                    ^
SyntaxError: 'yield' inside async function

无论我做什么,无论是尝试运行现有的python代码还是激活python2环境或预先存在的python3环境,我都会得到与上面完全相同的错误。检查python版本与之前相同,即

C:\Users\thisuser>python --version 
Python 3.5.1 :: Anaconda 2.4.1 (64-bit)

任何建议都会很棒。感谢。

EDIT1: 发现此错误报告:https://bugs.python.org/review/28003/diff/18396/Lib/types.py?context=50&column_width=80

无法理解如何利用此功能解决问题。尝试在_collections_abc.py中注释掉代码的相关部分,但这会导致其他奇怪的错误。

2 个答案:

答案 0 :(得分:0)

您使用的python可执行文件似乎已旧,即使库路径指向python3.6

C:\Users\thisuser\AppData\Local\Continuum\Anaconda3\bin添加到PATH变量的开头。或者,从C:\Users\thisuser\AppData\Local\Continuum\Anaconda3\bin\python运行python。

答案 1 :(得分:0)

(Windows 10) 我有同样的问题,但意识到&#34;项目口译员&#34;在我的Pycharm上仍设置为3.5,而PYTHONPATH设置为3.6可执行文件。改变了&#34;项目口译员&#34;到3.6并解决问题