python importlib не может найти модуль с абсолютным путем

#python #path #python-import

#python #путь #python-импорт

Вопрос:

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

 moduleImportTest
|____ main.py
|____ test
      |___ mymod.py
  

Я пытаюсь использовать importlib для импорта mymod.py от main.py . На данный момент, main.py выглядит примерно так:

 import importlib, os
theFile = os.path.dirname(os.path.abspath(__file__))   "/test/mymod.py"
print(theFile)
importlib.import_module(theFile)
  

print Оператор в строке 3 выводит правильный путь к файлу (хотя в этом примере я заменил свое настоящее имя на «имя пользователя»:)

 /home/username/moduleImportTest/test/mymod.py
  

Однако строка 4 выдает исключение:

   File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named '/home/username/moduleImportTest/test/mymod'
  

Я не могу понять, что является причиной этого. Я действительно в недоумении, что попробовать.

Большая часть онлайн-информации об этом предполагает, что вместо того, чтобы передавать путь напрямую importlib , я должен сначала добавить соответствующий каталог в путь, используя sys , а затем использовать обычную инструкцию import для обычного импорта модуля. Причина, по которой я не хочу использовать этот подход, заключается в том, что в будущем я хочу иметь возможность перебирать определенный каталог и импортировать туда все модули, независимо от имени.

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