Примечание. Я уменьшил свою проблему, поэтому код составляет всего несколько строк (по сравнению с 600).
У меня проблема: из main.py я хочу импортировать файл slave.py. slave.py ссылается на функцию из main.py, и, конечно, я получаю NameError: name 'funcFromMain' is not defined
Вот мой код для main.py:
import slave
def funcFromMain():
return 6
print(slave.funcFromSlave())
А вот мой код для slave.py:
def funcFromSlave():
one = funcFromMain() # <- this doesn't work
two = 2
return (one + two)
Я получаю точную ошибку: (обратите внимание, что оба файла находятся в одном и том же каталоге)
Traceback (most recent call last):
File "C:\Users\PrinceOfCreation\Documents\test\main.py", line 6, in <module>
print(slave.funcFromSlave())
File "C:\Users\PrinceOfCreation\Documents\test\slave.py", line 2, in funcFromSlave
one = funcFromMain()
NameError: name 'funcFromMain' is not defined
Я попытался добавить import main вверху файла slave.py и получил следующую ошибку:
Traceback (most recent call last):
File "C:\Users\PrinceOfCreation\Documents\test\main.py", line 1, in <module>
import slave
File "C:\Users\PrinceOfCreation\Documents\test\slave.py", line 1, in <module>
import main
File "C:\Users\PrinceOfCreation\Documents\test\main.py", line 6, in <module>
print(slave.funcFromSlave())
AttributeError: module 'slave' has no attribute 'funcFromSlave'
С from slave import funcFromSlave вместо этого в верхней части основного:
Traceback (most recent call last):
File "C:\Users\PrinceOfCreation\Documents\test\main.py", line 6, in <module>
print(funcFromSlave())
File "C:\Users\PrinceOfCreation\Documents\test\slave.py", line 2, in funcFromSlave
one = funcFromMain()
NameError: name 'funcFromMain' is not defined
Подождите, неважно... Я неправильно понял проблему. Забудь, что я что-то сказал.
Вы пробовали «импорт основного» в slave.py? Это может сработать, но в идеале у вас не должно быть таких циклических зависимостей в коде.
Вопрос обновлен: я попробую идею @AshwineeKJha






Сначала вы не можете импортировать модуль Python следующим образом:
import slave.py
Это должно быть
from slave import funcFromSlave # to get the funcFromSlave function from slave script
И вам нужно убедиться, что slave.py находится в том же каталоге, что и main.py или
вам нужно указать подкаталог, в котором существует slave.py
И для более поздней ошибки лучше всего избегать циклического импорта, потому что это создаст проблемы, лучше всего отправить значение funcFromMain() в funcFromSlave
main.py :
from slave import funcFromSlave
def funcFromMain():
return 6
print(funcFromSlave(funcFromMain()))
раб.py:
def funcFromSlave(funcFromMain):
one = funcFromMain
two = 2
return (one + two)
вывод при запуске main.py :
8
Спасибо большое. Теперь попытаюсь применить к моей другой программе.
Единственная проблема с вашим кодом в том, что
import slave.pyдолжно бытьimport slave. Кроме этого, в этом нет ничего плохого. Если этот код не работает для вас, нам понадобится дополнительная информация от вас — где находитсяslave.py, где находитсяmain.py, что такоеsys.path, что выдаетprint(slave.__file__)и т. д.