У меня есть проект python, который должен иметь возможность запускать внешние скрипты.Повторный импорт другого модуля python с тем же именем
Эти сценарии динамически импортируются в структуру каталогов с несколькими модулями.
Теперь, поскольку эти сценарии написаны независимо и не знают друг о друге, они часто используют те же имена модулей.
Это делает его проблематичным для меня при импорте их один за другим.
Например, вот моя структура каталогов:
- main.py
-
- a.py
- utils.py
- б
- b.py
- utils.py
-
Так у меня есть сценарий main.py в корневой папке и 2 "внешние" скрипты в а и б папок.
Оба сценария используют другой модуль utils.py.
Содержание а/a.py:
import utils
utils.hello()
содержимое/utils.py:
def hello():
print 'hello from a'
Содержание ч/b.py:
import utils
utils.hello()
Содержание от b/utils.py:
def hello():
print 'hello from b'
Содержание main.py
import sys
sys.path.append('a')
import a
sys.path.append('b')
import b
Теперь, этот пример печатает:
hello from a
hello from a
И я, очевидно, нужно, чтобы напечатать:
hello from a
hello from b
Как я не In- заряд «внешних» сценариев, и я не могу их изменить, есть ли способ, которым я могу это сделать?
редактировать
Использование @ Мойнуддин-Quadri ответ импорта, как: от импорта действительно работает для этого простого примера, но что об этом:
- main.py
- a
- a.py
- Lib
- utils.py
- lib2
- utils2.py
- б
- b.py
- Lib
- utils.py
- lib2
- utils2.py
- a
Где каждый utils.py делает:
из Lib2 импорта utils2
Для этой работы мне нужна корневая папка сценария, чтобы быть на sys.path
Когда б/Библиотека/Utils пытается запустить: от Lib2 импорта utils2, он получает utils2 в/lib2
Спасибо! это работает, хотя я не уверен, почему ... –
@GuyErlich Добавлены некоторые ссылки. Вы можете найти те полезные –
ОК, я нашел более сложное объяснение, которое все еще не работает. см. новое редактирование –