Вот странная ошибка, которая началась в последнее время. Всякий раз, когда я пытаюсь импортировать модуль, который не существует, я получаю 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'
Это, кажется, «вы пытались вызвать python2 экспромты из Python3, глупенький» ошибка типа, но он явно не имеет никакого отношения к коду, который я написал (как вы можете видеть по вышеуказанной трассировке), я просто запустил repl, import missing
, и ошибка произошла). Такое поведение началось вскоре после того, как я установил python 3.6, но это также происходит в моем python3.5 REPL (который я поддерживал), поэтому, вероятно, это не связано с этим.
Любые предположения относительно того, что может происходить? Я немного поиграл в importlib, но я в значительной степени просто в затруднении.
EDIT: Тайна решена, см. Комментарий.
Это происходит при любом импорте, которого нет, не так ли? Существует не какой-то сумасшедший конфликт, когда на самом деле у вас есть пакет под названием 'missing', верно? – BlackVegetable
huh, каковы версии Python? Я не могу воссоздать это с помощью «3.5.3rc1 +», «3.6.0 +» или «3.7.0a0». –
@BlackVegetable correct; то же самое происходит с произвольными именами импорта мусора. – So8res