GOOGLE ADS

вторник, 10 мая 2022 г.

Имя Python «os» не определено, хотя оно явно импортировано

У меня есть вызываемый модуль imtools.py, который содержит следующую функцию:

import os
def get_imlist(path):
return[os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]

Когда я пытаюсь вызвать функцию get_imlistиз консоли с помощью import imtoolsи imtools.get_imlist(path), я получаю следующую ошибку:

Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\...\PycharmProjects\first\imtools.py", line 5, in get_imlist
NameError: name 'os' is not defined

Я новичок в Python, и мне здесь не хватает чего-то простого, но я не могу понять это. Если я определяю функцию на консоли, она работает нормально. Конкретная история скрипта этого модуля такова: изначально он был написан без import osоператора, затем, увидев ошибку выше, import osоператор был добавлен в скрипт и пересохранен. Один и тот же сеанс консоли использовался для запуска скрипта до и после сохранения.


Решение проблемы

Основываясь на небольших подсказках, я собираюсь предположить, что в вашем коде изначально не было этой import osстроки, но вы исправили это в исходном коде и повторно импортировали файл.

Проблема в том, что Python кэширует модули. Если вы importнеоднократно, каждый раз получаете один и тот же модуль - он не перечитывается. Ошибка, которую вы допустили при первом импорте, сохранится.

Для повторного импорта imtools.pyфайла после редактирования необходимо использовать reload(imtools).

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...