簡體   English   中英

導入異步拋出錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM