Динамический импорт модуля у питона (кодируют от 3.2 до 3.3),

Я должен динамично импортировать модуль и создать класс.
Это - мой рабочий код в Пайтоне 3.2:

klass = {}
mod = __import__('sites.' + self.className + '_login', fromlist=[self.className])
klass[self.className] = getattr(mod, self.className)
klass[self.className](**self.args)

Модуль в папке "мест". Это назвало my_site_login и класс в том модуле "my_site".

Так как я модернизирую до Пайтона 3.3, код прекратил работать. Я прочитал, что _____ импорта _____ был, заменяют importlib.import_module. Я попробовал несколько способов сделать это, но я не могу заставить его работать.

Это - то, что я попробовал:
https://stackoverflow.com/a/8790051/1095101

mod = getattr(import_module('sites.' + self.className + '_login'), self.className)

Я не могу помнить то, что еще я попробовал. То, что я могу сказать, то, что ни одна из печати() я исправил после любой попытки импорта, показывал. Я не получаю сообщения об ошибке. Это просто делает замечание.

Извините за вопрос я знаю, что ему несколько раз отвечали, но я попробовал все, и ничто не работает. Я просто не могу думать больше. Спасибо в продвинутом.

0
nl ja de

1 ответы

Вы хотите реструктурировать это; в места пакет __ init __. py файл, импортируйте все модули, которые должны быть импортированы динамично.

Тогда просто используйте доступ признака вместо этого:

import sites

mod = getattr(sites, self.className + '_login')
klass[self.className] = getattr(mod, self.className)
klass[self.className](**self.args)

Если ваш my_site_login.py модули динамично произведены, importlib.import_module() подлежащие выкупу работы очень просто:

importlib

mod = importlib.import_module('sites.{}_login'.format(self.className))
klass[self.className] = getattr(mod, self.className)
klass[self.className](**self.args)

От интерактивной командной строки это хорошо работает:

>>> import importlib
>>> importlib.import_module('sites.my_site_login')

Проверенный это в Пайтоне 2.7, 3.2 и 3.3.

1
добавлено
Хорошо... это смущающее. Так как ваш код был точно, что я пробовал, что-то wasn' t право. Проблема находится в новом docstring модулей. Была декларация № utf-8, и некоторые знаки портят все. Так или иначе, I' ll используют ваш второй код, как вы предполагаете, они динамично произведены. Спасибо.
добавлено автор azeós, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

Про Windows
Про Windows
941 участник(ов)

Microsoft Windows и всё, что с этим связано. Список интересных групп и каналов: https://github.com/goq/telegram-list

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community