Как импортировать функцию при использовании пространства имен? - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь импортировать функцию.Пространство имен папки / файлов занято файлами в рабочем каталоге.Я пытаюсь найти способ, где я могу импортировать это:

  • без изменения каких-либо имен
  • только импорт функции в рабочий файл

(package_1 и package_2 ниже - папки с исходными файлами)

package_1\
    foo\
        __init__.py
        bar.py (myfunc, myfunc2 in this file)

package_2\
    subpackage_2\
        __init__.py
        foo.py
        bar.py
        hoo.py

Я хочу, чтобы myfunc и myfunc2 были импортированы в hoo.py Что я обычно делал бы:

from foo.bar import myfunc, myfunc2

однако foo уже занято (также bar, но я не думаю, что это имеет большое значение)

Решение, которое я пробовал:

Я могу заставить это работатьимпортировать в __init__.py из subpackage_2 и затем импортировать снова:

__init__.py:

from foo.bar import myfunc, myfunc2

hoo.py:

from subpackage_2 import myfunc, myfunc2

Однако я неНе хочу импортировать во весь подпакет

Пробовал, но не удалось:

Я пытался временно удалить package_2 из sys.path и затем импортировать,затем добавив package_2 обратно. Я не могу найти правильный способ сделать это.

1 Ответ

0 голосов
/ 24 мая 2019

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

bar = __import__('foo.bar') # I did initially use from_list but looks like I don't need it
myfunc, myfunc2 = bar.myfunc, bar.myfunc2
...