[英]Importing asyncio throws error
在終端中,我想用asyncio測試某些東西。 這是我所做的:
$ python3.6
Python 3.6.2 (v3.6.2:5fd33b5926, Jul 16 2017, 20:11:06)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import asyncio
這引發了如下錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/__init__.py", line 42, in <module>
tasks.__all__ +
AttributeError: module 'asyncio.tasks' has no attribute '__all__'
為什么會引發此錯誤,我該如何解決? (我以相同的方式檢查了我的python 3.5解釋器,但沒有錯誤,所以庫可能已損壞?)
我已經使用-v
開關運行了Python,在提示符下運行import asyncio
之后產生的輸出相當大,因此可以在GitHub gist中使用 。
您的本地安裝已損壞。 從您提供的python -v
輸出中:
# bytecode is stale for 'asyncio.tasks'
# code object from /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/tasks.py
import 'asyncio.tasks' # <_frozen_importlib_external.SourceFileLoader object at 0x104cf7860>
字節碼是陳舊消息意味着asyncio/tasks.py
文件比伴隨新 asyncio/__pycache__/tasks.cpython-36.pyc
文件。 這表明某些內容已更改tasks.py
文件,從而導致其內容與Python二進制文件附帶的內容不同。
為了進行比較,兄弟模塊asyncio.events
是從字節碼緩存中加載的,字節碼緩存是由Python安裝程序在安裝時提供的:
# code object from '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/__pycache__/events.cpython-36.pyc'
import 'asyncio.events' # <_frozen_importlib_external.SourceFileLoader object at 0x104ccf4e0>
該模塊的代碼對象是從asyncio/__pycache__/events.cpython-36.pyc
文件加載的。
您可以從OS X安裝程序中重新安裝Python,但此時,我只想獲取較新的3.6.5版本 。
您還可以嘗試通過從v3.6.2標記下載原始源來恢復原始內容,但隨后必須確保重新生成字節碼(運行sudo python -m compileall /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/tasks.py
),您需要檢查其他任何已更改的文件(嘗試find /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6 -name \\*.py -newer /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/__init__.py
)
看來是個錯誤
嘗試通過brew升級Python
brew upgrade python3
目前,Python 3.6.5可用,並且沒有這樣的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.