Ошибка импорта в python - PullRequest
       12

Ошибка импорта в python

1 голос
/ 08 декабря 2010

В file1.py:

      def test1():
        print "hi"

В file2.py:

      from file1 import test1

      def test2():
        print "hello"

      test1()
      test2()

Вывод:

      hi
      hello

Теперь в файле 1, если я включаю test2я получаю следующую ошибку:

    from file2 import test2

    def test1():
      print "hi"

   Traceback (most recent call last):
   File "file1.py", line 1, in ?
   from file2 import test2
   File "/root/pyt/file2.py", line 1, in ?
   from file1 import test1
   File "/root/pyt/file1.py", line 1, in ?
   from file2 import test2
  ImportError: cannot import name test2

Кто-нибудь может объяснить, почему и как это работает?

Ответы [ 2 ]

4 голосов
/ 08 декабря 2010

Это круговая проблема импорта.Вы импортируете file2 из file1 и затем на верхний уровень file2, снова импортируя file1.Это означает, что 1 не может загружаться, если вы не импортируете 2, а 2 не может загружаться, если вы не импортируете `1.

. Что касается того, как заставить это работать, вы можете объяснить, что вы хотите сделать?Почему бы вам просто не поместить обе эти функции в один и тот же модуль и не импортировать их за один раз?

2 голосов
/ 08 декабря 2010

Имя не существует в модуле к тому времени, когда вы пытаетесь получить к нему доступ.

...