Как использовать из x import y используя importlib в Python - PullRequest
1 голос
/ 05 июля 2019

Я хотел установить и импортировать пакет из скрипта. Затем я хотел добавить from x import y и from x import * в этот скрипт. (на самом деле я делал некоторые функции) .

Я успешно установил и импортировал, используя subprocess и importlib. Но я в растерянности from x import y и from x import *. Пробовал эти коды и некоторые другие.

globals()[package] = importlib.import_module('package','class')
globals()[package] = importlib.import_module('class','package')
globals()[package] = importlib.import_module('package','*')
globals()[package] = importlib.import_module('*','package')
importlib.import_module('gtts','gTTS')
importlib.import_module('gtts','*')

Но они не работали. Показывает:

NameError: name 'gTTS' is not defined
ModuleNotFoundError: No module named 'gTTS'

и т.д.

1 Ответ

1 голос
/ 05 июля 2019

Я не думаю, что вы можете загружать методы напрямую, так как этот метод просто загружает модули.Модуль загружен с import module, и я определен как «Модуль - это файл, содержащий определения и операторы Python. Имя файла - это имя модуля с добавленным суффиксом .py.» (Проверьте документация ).from x import y также выполняет import module, но устанавливает другое пространство имен (см. Обсуждение здесь ).Что вы можете сделать, это загрузить свой модуль, а затем вручную задать пространство имен, это то, что делает from x import y syntax.Вы можете загрузить модуль с путем (в этом примере я хочу загрузить read_csv из панд):

importlib.import_module(".io.parsers", "pandas")

(проверьте путь с помощью print(inspect.getmodule(read_csv).__name__))

Также решениекак jottbe , упомянутый в комментарии, возможно

...