Importlib.import_module() импортирует модули из нескольких подпапок, но распознается только каталог верхнего уровня.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Importlib.import_module() импортирует модули из нескольких подпапок, но распознается только каталог верхнего уровня.

Сообщение Anonymous »

Я использую importlib.import_module() для импорта модулей из разных папок, но он распознает только имя каталога верхнего уровня. Это моя среда.
В тестовом каталоге есть три папки a, b и c

Код: Выделить всё

(py312) root@ubuntu2004-host:~# tree test/
test/
├── a
│   ├── aa
│   │   └── aaa
│   │       └── aaaa
│   └── a.py
├── b
└── c
└── cxxx.py

6 directories, 2 files
Код a.py выглядит следующим образом:

Код: Выделить всё

import importlib
import sys

print(sys.path)
params=importlib.import_module('c.cxxx')
params.args
params.C
Код c.py выглядит следующим образом:

Код: Выделить всё

args = {'a': 1}

class C:
def C(self):
pass
При выполнении a.py всегда выдается сообщение об ошибке ModuleNotFoundError: Нет модуля с именем 'c', что означает, что вместо модуля cxxx распознается каталог c
p>

Код: Выделить всё

(py312) root@ubuntu2004-host:~/test# python3.12 a/a.py
['/root/test/a', '/usr/lib/python312.zip', '/usr/lib/python3.12', '/usr/lib/python3.12/lib-dynload', '/usr/local/lib/python3.12/dist-packages', '/usr/lib/python3/dist-packages']
Traceback (most recent call last):
File "/root/test/a/a.py", line 5, in 
params=importlib.import_module('c.cxxx')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1387, in _gcd_import
File "", line 1360, in _find_and_load
File "", line 1310, in _find_and_load_unlocked
File "", line 488, in _call_with_frames_removed
File "", line 1387, in _gcd_import
File "", line 1360, in _find_and_load
File "", line 1324, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'c'
Исходная версия Python — 3.11. Я также пробовал Python 3.12.4 и 3.8, но они тоже выдавали ту же ошибку.


Подробнее здесь: https://stackoverflow.com/questions/787 ... t-only-the
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»