Выбор ответа Junior Модули, пакеты и окружения обновлено

Свой файл перекрыл модуль стандартной библиотеки

Вопрос

В проекте есть файл random.py. Скрипт рядом делает import random и падает на random.randint. Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Каталог скрипта первый в sys.path, взят свой random.py. Поиск идёт по sys.path по порядку, и каталог запускаемого скрипта стоит в начале.

Варианты ответа

  1. Модуль random удалён в Python 3.13, нужен secrets
  2. Стандартную библиотеку нельзя импортировать без pip install
  3. random нужно импортировать как from std import random
  4. Каталог скрипта первый в sys.path, взят свой random.pyправильный ответ

Разбор

Поиск идёт по sys.path по порядку, и каталог запускаемого скрипта стоит в начале. Свой файл с именем модуля стандартной библиотеки его перекрывает. Решение: переименовать файл и удалить __pycache__. Модуль random никуда не делся, стандартная библиотека ставится вместе с Python, а пространства имён std нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме