2016-06-08 74 views
2

這裏是我的代碼:Python模塊工作在2.7,但不是在3.5

Animals/__init__.py

from Mammals import Mammals 

from Bird import Bird 

動物/ Mammals.py

class Mammals(object): 

    def __init__(self): 
     self.members = ['Tiger', 'Elephant','Wild Cat'] 

    def print_members(self): 
     for member in self.members : 
      print('this is a member :' + member) 

動物/ Bird.py

class Bird(object): 

    def __init__(self): 
     self.birds = ['sparrow','robbin','duck'] 

    def print_members(self): 
     print('printing birds in bird class') 
     for bird in self.birds: 
      print('this is a bird '+ bird) 

test.py

from Animals import Mammals, Bird 

mam = Mammals() 
bird = Bird() 

mam.print_members() 

bird.print_members()  

我已經安裝了Python 3(MacOSX),並將其與virtualenv一起使用。這段代碼在2.7下正常工作,但它不適用於python3.5。它總是給出ImportError: No module named Mammals

+0

它是從動物/ __ init__.py – vidyasagarr7

+2

'從.Mammals導入哺乳動物'一個點在這裏不見了。命令'2to3'將爲你做到這一點。 – gdlmx

+0

@感謝很多。解決了問題。 – vidyasagarr7

回答

3

Python 3區分了相對和絕對導入,不再支持隱式相對導入。

您的代碼在運行python2因爲解析器意味着BirdsMammals相對進口,但python3停止這樣做。

運行2to3爲您的文件將修復它。

from .Mammals import Mammals 
from .Bird import Bird