这是最近开始发生的一个奇怪的错误。每当我试图导入不存在的模块,我得到的TypeError
代替ImportError
一个:每当输入缺失时,Python TypeError(“类似字节的对象是必需的,而不是'str'”)
$ python
Python 3.6.0 (default, Jan 30 2017, 10:05:52)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import missing
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 946, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 885, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1157, in find_spec
File "<frozen importlib._bootstrap_external>", line 1129, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1268, in find_spec
File "<frozen importlib._bootstrap_external>", line 60, in _path_join
File "<frozen importlib._bootstrap_external>", line 60, in <listcomp>
TypeError: a bytes-like object is required, not 'str'
这似乎是一个“你试图调用从python3一个python2 LIB,傻”式的错误,但它显然与我写的代码无关(正如你可以通过上述回溯看到的 - 我刚开始一个repl,import missing
,并且发生错误)。这种行为在我安装python 3.6后不久就开始发生,但它也发生在我的python3.5 REPL(我一直保留)中,所以它可能与此无关。
任何猜测可能会发生什么?我在importlib中搜索了一下,但在这里我几乎感到茫然。
编辑:神秘解决了,看评论。
这发生在任何不存在的导入上,对吗?有没有一些疯狂的冲突,你实际上有一个名为“失踪”的包,对吧? – BlackVegetable
呵呵,什么是Python版本?我不能用'3.5.3rc1 +','3.6.0 +'或'3.7.0a0'重新创建这个。 –
@BlackVegetable正确;任意垃圾导入名称都会发生同样的情况。 – So8res