Не удается импортировать модуль из локальной папки? «Модуль не назван»

#python #python-import

#python #python-импорт

Вопрос:

Я не нахожу ошибку ни в коде, ни в вызове при попытке выполнить тест импорта.

Моя структура каталогов следующая: (из /home/user1/python_test/ )

 main.py
Aux/lib1.py
Aux/__init__.py
  

main.py:

 from Aux.lib1 import fun_A

if __name__ == "__main__":
    fun_A()
    print("all done")
  

Aux/lib1.py:

 def fun_A():
    print("A function called")
  

Я выполняю из терминала ( python main.py из каталога, где main.py есть), может быть, есть необходимость установить pythonpath? Я не помню необходимости раньше, некоторое время назад я создал несколько подобных программ на Python (2/3 года)

Я также пробовал from .Aux.lib1 import fun_A вместо from Aux.lib1 import fun_A , но ничего не работает. Ошибка:

   File "main.py", line 1, in <module>
    from Aux.lib1 import fun_A
ImportError: No module named Aux.lib1
  

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

1. Использование: os.getcwd() это покажет вам, в каком текущем каталоге вы запускаете этот код. и используйте os.chdir('/home/user1/python_test/') для его изменения

2. Результат тот же: os.getcwd() выводит /home/user1/python_test/

3. Пример отлично работает на моей машине. В вашей среде Python должно быть что-то еще

4. хм, и что я мог бы найти, чтобы узнать проблему? Для меня это тоже странно, обычно это работает без ошибок.

Ответ №1:

Создайте пустой файл с именем __init__.py в папке Aux. Без этого файла каталог не может быть модулем.

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

1. о, извините, я не упомянул об этом, но у меня также есть этот файл внутри Aux/

Ответ №2:

О боже, это была супер глупая ошибка. Я так привык выполнять внутри виртуальной среды, что по ошибке использовал python2 python main.py . Выполнение python3 main.py сработало для меня.