Невозможно импортировать подмодули Tornado

Попытка установить Tornado в первый раз (на примере EC2 Linux). Я сделал

pip install tornado

а затем попытался запустить пример приветствия: http://www.tornadoweb.org/en/stable/#hello-world

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(80)
    tornado.ioloop.IOLoop.instance().start()

Затем я попробую:

python hello.py

но получим:

Traceback (последний последний вызов): Файл "testing/tornado.py", строка 1, в
    import tornado.ioloop Файл "/opt/pdf_engine/testing/tornado.py", строка 1, на
    import tornado.ioloop ImportError: Нет модуля с именем ioloop

Ответы

Ответ 1

Не указывайте свой файл tornado.py; это тень реального импорта Торнадо. Назовите его чем-то вроде того, что вы использовали в вашем примере, например. hello.py

Теперь ваш import tornado.ioloop пытается импортировать элемент ioloop из вашего собственного файла, потому что он имеет имя tornado и в текущем каталоге с наивысшим приоритетом импорта.

Ответ 2

Если вы назвали свой файл tornado.py и переименовали его в другое имя, не забудьте удалить tornado.pyc в вашем каталоге.