Django shell - плохая область видимости для файлов сценариев

Проблема:

Дан следующий скрипт python script.py

import time

class Test:
  def __init__(self):
    print("time class", time)  # In class scope

def testing():
  print("time method", time)  # In method scope
  #Test()

print("time top", time)  # In file scope
testing()

Когда я пытаюсь выполнить этот файл в оболочке django

python3 manage.py shell < script.py

Я получаю следующую ошибку:

time top <module 'time' (built-in)>
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/kailen/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/home/kailen/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/kailen/.local/lib/python3.6/site-packages/django/core/management/base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/kailen/.local/lib/python3.6/site-packages/django/core/management/base.py", line 371, in execute
    output = self.handle(*args, **options)
  File "/home/kailen/.local/lib/python3.6/site-packages/django/core/management/commands/shell.py", line 93, in handle
    exec(sys.stdin.read())
  File "<string>", line 12, in <module>
  File "<string>", line 8, in testing
NameError: name 'time' is not defined

Эта же ошибка возникает при использовании любой импортированной функции/класса/модуля внутри области видимости метода/класса. Я пробовал назначать псевдоним, импортировать весь модуль и импортировать только нужную функцию, но ничего не помогает.

Контекст:

Я пытался написать демон для использования selenium и некоторых моделей моего django, Я закончил тем, что закодировал его как класс и хотел использовать библиотеку времени для задержки запросов. время для тестирования и я пришел к этой ошибке, я попробовал несколько обходных путей, все они работают, кроме одного случая, который я показал выше. Я не против использования обходных путей, но я не могу взять в толк, что я здесь что-то упускаю.

Что я пробовал:

Следующие способы использования скрипта работают:

python3 manage.py shell -c "import script"
python3 manage.py shell <<< "import script"
cat script.py | python3 manage.py shell
echo "import script" | python3 manage.py shell

Выход:

time top <module 'time' (built-in)>
time method <module 'time' (built-in)>
time class <module 'time' (built-in)>

Актуальный вопрос:

Если кто-нибудь1 может объяснить почему это происходит или как заставить shell < script.py работать (не хочу выходить из игры)

Вернуться на верх