无法导入类

时间:2014-02-01 20:57:15

标签: python pygame

这是我正在制作的游戏。不过我自己也看不到问题。

这是错误和两个.py文件:

C:\Users\Rickard\My Programs\Python\slutarbete\New try>main.py
Traceback (most recent call last):
  File "C:\Users\Rickard\My Programs\Python\slutarbete\New try\main.py", line 6,
 in <module>
    from rabbits import Rabbit
  File "C:\Users\Rickard\My Programs\Python\slutarbete\New try\rabbits.py", line
 3, in <module>
    import main
  File "C:\Users\Rickard\My Programs\Python\slutarbete\New try\main.py", line 6,
 in <module>
    from rabbits import Rabbit
ImportError: cannot import name Rabbit

main.py

# -*- coding: utf-8 -*-

import pygame, sys, random, math
from rabbits import Rabbit
from pigs import Pig
from boars import Boar
from pygame.locals import *
from threading import Timer

pygame.init()
pygame.mixer.init()
mainClock = pygame.time.Clock()

WINDOW_WIDTH = 640
WINDOW_HEIGHT = 400

level = 1
while True:

...

和rabbits.py文件:

# -*- coding: utf-8 -*-
import pygame, sys, random, math
import main

class Rabbit(object):

    rabbitCounter = 0
    NEW_RABBIT = 40
    RABBIT_SIZE = 64

    ...

我确定可以在此代码中使用其他明显错误的帮助。

2 个答案:

答案 0 :(得分:8)

您有循环导入。在main模块中,您尝试从rabbits导入。但是从rabbitsimport main开始。但是main尚未完成导入,因此当您尝试从ImportError模块导入任何内容时会产生rabbits

我不知道您为什么要在那里导入,但是您应该重新构建模块,以便rabbits不需要main中的任何内容。

另见Circular (or cyclic) imports in Python

对于任何包含多个模块的Python项目,您应该将其改为package

答案 1 :(得分:5)

Python中的import语句在Python到达文件后立即执行。对于此程序,您运行main.py,Python看到

from rabbits import Rabbit
然后Python转到rabbits.py并看到

import main

这会导致Python循环回main.py。 Python注意到它已经看到了这两个模块的import语句,并决定不再尝试导入,以避免在这种情况下无限循环。

这里的解决方案是重构代码,以便rabbit.py之外的其他模块可以访问main的任何需求。