Итак, я попробую дать вам кое-что, что может решить вашу проблему. По сути, вы строите круговую зависимость: commands.py
записывается как main.py
, main.py
зависит от commands.py
для его функций. Почти наверняка есть способ решить вашу проблему без введения такой круговой зависимости, но мне нужно знать больше, чтобы что-то предложить.
Если вы уверены, что хотите сделать это так, вы можете использовать importlib.reload
, что говорит Python перезагрузить модуль, который вы уже импортировали. Другими словами, если вы добавили новую функцию в commands.py
после вызова исходного import
, вызов reload
теперь сделает эту функцию доступной.
В качестве небольшого примера попробуйте настроить скрипты commands.py
и main.py
следующим образом:
#commands.py
def func1():
print(1)
и
#main.py
import commands
commands.func1()
input("hit enter once you've edited commands.py")
from importlib import reload
commands = reload(commands)
commands.func2()
запустите main.py
и когда вы доберетесь до части input
, откройте commands.py
и измените его так:
#commands.py
def func1():
print(1)
def func2():
print(2)
Теперь нажмите "enter" в запущенном main.py
скрипте. Вы должны увидеть результат func2
, напечатанный на терминале.
Обратите внимание также на то, что reload
не обязательно действует так, как вы ожидаете, и может вызвать некоторые странные и объяснимые вещи. Для получения дополнительной информации см. Этот пост: https://stackoverflow.com/a/438845/141789