2010-12-08 1 views
1

В file1.py:ошибка импорта в Python

 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 

Может кто-нибудь объяснить, почему и как заставить его работать?

+0

Предварительный просмотр перед отправкой. Это было довольно непроницаемо. – 2010-12-08 12:41:54

+1

циклический импорт, прочитайте все об этом. – SilentGhost 2010-12-08 12:43:14

ответ

4

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

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

+1

Нет, не это. Циркулярный импорт действителен в Python. Недопустимым является доступ к атрибутам, которые не существуют. – 2010-12-08 12:46:13