Ошибка при попытке общения в Python - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу, чтобы два сценария общались на python.Я хочу, чтобы они знали, если другие потерпели неудачу.

Делая то, что вы видите на картинке, у меня есть несколько вопросов.Когда я запускаю rob2.py, я автоматически запускаю rob1.py, почему это так?

rob1.py

import simpy
import time
from rob2 import brok2

class Moving:
    def __init__(self, env):
        self.env = env
        """What does self.prov do?"""
        self.prov = env.process(self.work())
        self.broken = False
        if self.broken == False:
            global brok1
            brok1 = 0
        else:
            brok1 = 0
        #print(brok1)
    def work(self):
        while True:
            yield env.timeout(20)


if brok2 == 1:
    print("Robot 2 is not broken")
else:
    print("Robot 2 is broken")
env= simpy.Environment()
moving = Moving(env)
env.run(until = 60)

rob2.py

import simpy
import time
from rob1 import brok1

class Placing:

    def __init__(self, env):
        self.env = env
        """What does self.prov do?"""
        self.prov = env.process(self.work())
        self.broken = False
        if self.broken == False:
            global brok2
            brok2=1
        else:
            brok2 = 0

    def work(self):
        while True:
            yield env.timeout(20)

time.sleep(5)
if brok1 == 1:
    print("Robot 1 is not broken")
else:
    print("Robot 1 is broken")
env= simpy.Environment()
placing = Placing(env)
env.run(until = 60)

И что я сделал не так, когда я получил это сообщение, пытаясь запустить сценарии?

Traceback (most recent call last):
  File "rob2.py", line 3, in <module>
    from rob1 import brok1
  File "/Users/erik/Python/python/rob1.py", line 3, in <module>
    from rob2 import brok2
  File "/Users/erik/Python/python/rob2.py", line 3, in <module>
    from rob1 import brok1
ImportError: cannot import name 'brok1'

Я наткнулся на несколько сообщений о zeroMQ, это путь сюда

1 Ответ

0 голосов
/ 25 апреля 2018

Исключение ImportError выдается, потому что Python обнаруживает циклический цикл импорта: в один из ваших файлов вы импортируете другой, который сам импортирует первый, который импортирует второй и т. Д.

Вам нужно будет реорганизовать свой код, чтобы избежать этого. Большинству (всех?) Языков программирования не понравится циклический импорт тем или иным способом.

...