Problem with importing in Python

Discussion in 'Python' started by su29090, Jan 11, 2013.

  1. su29090

    su29090 Guest

    I'm trying to import a python file it keeps saying:

    ImportError: cannot import name Circle

    Here is the file I'm trying to import:

    Circle.py

    import math

    class circle:
    #Construct a circle object
    def __init__(self, radius = 1):
    self.radius = radius

    def getPerimeter(self):
    return 2 * self.radius * math.pi

    def getArea(self):
    return self.radius * self.radius * math.pi

    def setRadius(self, radius):
    self.radius = radius

    from Circle import Circle

    def main():
    #Create a circle with a radius 1
    circle1 = Circle()
    print("The area of the circle of radius",
    circle1.radius, "is" , circle1.getArea())

    #Create a circle with a radius 25
    circle2 = Circle(25)
    print("The area of the circle of radius",
    circle2.radius, "is" , circle2.getArea())

    #Create a circle with a radius 125
    circle3 = Circle(125)
    print("The area of the circle of radius",
    circle3.radius, "is" , circle3.getArea())

    #Modify circle radius
    circle2.radius = 100 # or Circle2.setRadius(100)
    print("The area of the circle of radius",
    circle2.radius, "is" , circle2.getArea())

    main() # Call the main function

    How can I solve this problem?

    Thanks in advance.
     
    su29090, Jan 11, 2013
    #1
    1. Advertising

  2. su29090

    Adnan Sadzak Guest

    Python is case sensitive.
    Circle and circle is not same.




    /* sent from android */
    On Jan 11, 2013 11:22 PM, "su29090" <> wrote:

    > I'm trying to import a python file it keeps saying:
    >
    > ImportError: cannot import name Circle
    >
    > Here is the file I'm trying to import:
    >
    > Circle.py
    >
    > import math
    >
    > class circle:
    > #Construct a circle object
    > def __init__(self, radius = 1):
    > self.radius = radius
    >
    > def getPerimeter(self):
    > return 2 * self.radius * math.pi
    >
    > def getArea(self):
    > return self.radius * self.radius * math.pi
    >
    > def setRadius(self, radius):
    > self.radius = radius
    >
    > from Circle import Circle
    >
    > def main():
    > #Create a circle with a radius 1
    > circle1 = Circle()
    > print("The area of the circle of radius",
    > circle1.radius, "is" , circle1.getArea())
    >
    > #Create a circle with a radius 25
    > circle2 = Circle(25)
    > print("The area of the circle of radius",
    > circle2.radius, "is" , circle2.getArea())
    >
    > #Create a circle with a radius 125
    > circle3 = Circle(125)
    > print("The area of the circle of radius",
    > circle3.radius, "is" , circle3.getArea())
    >
    > #Modify circle radius
    > circle2.radius = 100 # or Circle2.setRadius(100)
    > print("The area of the circle of radius",
    > circle2.radius, "is" , circle2.getArea())
    >
    > main() # Call the main function
    >
    > How can I solve this problem?
    >
    > Thanks in advance.
    >
    > --
    > http://mail.python.org/mailman/listinfo/python-list
    >
     
    Adnan Sadzak, Jan 11, 2013
    #2
    1. Advertising

  3. On Sat, Jan 12, 2013 at 9:17 AM, su29090 <> wrote:
    > Circle.py
    >
    > class circle:
    >
    > from Circle import Circle


    Inside the Circle module is a class named circle. You can't import
    Circle from that.

    But Python isn't Java. You don't have to put each class into its own
    file. Just put class circle (or class Circle to follow Python naming
    convention) into the other file, whose name you haven't given.

    If they're already in the same file, then just drop the import. Easy!

    By the way:
    > main() # Call the main function

    You'll need to put that flush left. At the moment, that call is part
    of the definition of main().

    Hope that helps!

    ChrisA
     
    Chris Angelico, Jan 11, 2013
    #3
  4. su29090

    su29090 Guest

    On Friday, January 11, 2013 5:25:24 PM UTC-5, Adnan Sadzak wrote:
    > Python is case sensitive.
    >
    > Circle and circle is not same.
    >
    >
    >
    >
    >
    >
    > /* sent from android */
    >
    > On Jan 11, 2013 11:22 PM, "su29090" <> wrote:
    >
    > I'm trying to import a python file it keeps saying:
    >
    >
    >
    > ImportError: cannot import name Circle
    >
    >
    >
    > Here is the file I'm trying to import:
    >
    >
    >
    > Circle.py
    >
    >
    >
    > import math
    >
    >
    >
    > class circle:
    >
    >     #Construct a circle object
    >
    >     def __init__(self, radius = 1):
    >
    >         self.radius = radius
    >
    >
    >
    >     def getPerimeter(self):
    >
    >         return 2 * self.radius * math.pi
    >
    >
    >
    >     def getArea(self):
    >
    >         return self.radius * self.radius * math.pi
    >
    >
    >
    >     def setRadius(self, radius):
    >
    >         self.radius = radius
    >
    >
    >
    > from Circle import Circle
    >
    >
    >
    > def main():
    >
    >     #Create a circle with a radius 1
    >
    >     circle1 = Circle()
    >
    >     print("The area of the circle of radius",
    >
    >           circle1.radius, "is" , circle1.getArea())
    >
    >
    >
    >     #Create a circle with a radius 25
    >
    >     circle2 = Circle(25)
    >
    >     print("The area of the circle of radius",
    >
    >           circle2.radius, "is" , circle2.getArea())
    >
    >
    >
    >     #Create a circle with a radius 125
    >
    >     circle3 = Circle(125)
    >
    >     print("The area of the circle of radius",
    >
    >           circle3.radius, "is" , circle3.getArea())
    >
    >
    >
    >     #Modify circle radius
    >
    >     circle2.radius = 100 # or Circle2.setRadius(100)
    >
    >     print("The area of the circle of radius",
    >
    >           circle2.radius, "is" , circle2.getArea())
    >
    >
    >
    >     main() # Call the main function
    >
    >
    >
    > How can I solve this problem?
    >
    >
    >
    > Thanks in advance.
    >
    >
    >
    > --
    >
    > http://mail.python.org/mailman/listinfo/python-list


    It still keeps showing the same message.
     
    su29090, Jan 11, 2013
    #4
  5. su29090

    su29090 Guest

    On Friday, January 11, 2013 5:25:24 PM UTC-5, Adnan Sadzak wrote:
    > Python is case sensitive.
    >
    > Circle and circle is not same.
    >
    >
    >
    >
    >
    >
    > /* sent from android */
    >
    > On Jan 11, 2013 11:22 PM, "su29090" <> wrote:
    >
    > I'm trying to import a python file it keeps saying:
    >
    >
    >
    > ImportError: cannot import name Circle
    >
    >
    >
    > Here is the file I'm trying to import:
    >
    >
    >
    > Circle.py
    >
    >
    >
    > import math
    >
    >
    >
    > class circle:
    >
    >     #Construct a circle object
    >
    >     def __init__(self, radius = 1):
    >
    >         self.radius = radius
    >
    >
    >
    >     def getPerimeter(self):
    >
    >         return 2 * self.radius * math.pi
    >
    >
    >
    >     def getArea(self):
    >
    >         return self.radius * self.radius * math.pi
    >
    >
    >
    >     def setRadius(self, radius):
    >
    >         self.radius = radius
    >
    >
    >
    > from Circle import Circle
    >
    >
    >
    > def main():
    >
    >     #Create a circle with a radius 1
    >
    >     circle1 = Circle()
    >
    >     print("The area of the circle of radius",
    >
    >           circle1.radius, "is" , circle1.getArea())
    >
    >
    >
    >     #Create a circle with a radius 25
    >
    >     circle2 = Circle(25)
    >
    >     print("The area of the circle of radius",
    >
    >           circle2.radius, "is" , circle2.getArea())
    >
    >
    >
    >     #Create a circle with a radius 125
    >
    >     circle3 = Circle(125)
    >
    >     print("The area of the circle of radius",
    >
    >           circle3.radius, "is" , circle3.getArea())
    >
    >
    >
    >     #Modify circle radius
    >
    >     circle2.radius = 100 # or Circle2.setRadius(100)
    >
    >     print("The area of the circle of radius",
    >
    >           circle2.radius, "is" , circle2.getArea())
    >
    >
    >
    >     main() # Call the main function
    >
    >
    >
    > How can I solve this problem?
    >
    >
    >
    > Thanks in advance.
    >
    >
    >
    > --
    >
    > http://mail.python.org/mailman/listinfo/python-list


    It still keeps showing the same message.
     
    su29090, Jan 11, 2013
    #5
  6. su29090

    su29090 Guest

    On Friday, January 11, 2013 5:27:21 PM UTC-5, Chris Angelico wrote:
    > On Sat, Jan 12, 2013 at 9:17 AM, su29090 wrote:
    >
    > > Circle.py

    >
    > >

    >
    > > class circle:

    >
    > >

    >
    > > from Circle import Circle

    >
    >
    >
    > Inside the Circle module is a class named circle. You can't import
    >
    > Circle from that.
    >
    >
    >
    > But Python isn't Java. You don't have to put each class into its own
    >
    > file. Just put class circle (or class Circle to follow Python naming
    >
    > convention) into the other file, whose name you haven't given.
    >
    >
    >
    > If they're already in the same file, then just drop the import. Easy!
    >
    >
    >
    > By the way:
    >
    > > main() # Call the main function

    >
    > You'll need to put that flush left. At the moment, that call is part
    >
    > of the definition of main().
    >
    >
    >
    > Hope that helps!
    >
    >
    >
    > ChrisA


    It worked! Thanks so much! :)
     
    su29090, Jan 11, 2013
    #6
  7. su29090

    su29090 Guest

    On Friday, January 11, 2013 5:27:21 PM UTC-5, Chris Angelico wrote:
    > On Sat, Jan 12, 2013 at 9:17 AM, su29090 wrote:
    >
    > > Circle.py

    >
    > >

    >
    > > class circle:

    >
    > >

    >
    > > from Circle import Circle

    >
    >
    >
    > Inside the Circle module is a class named circle. You can't import
    >
    > Circle from that.
    >
    >
    >
    > But Python isn't Java. You don't have to put each class into its own
    >
    > file. Just put class circle (or class Circle to follow Python naming
    >
    > convention) into the other file, whose name you haven't given.
    >
    >
    >
    > If they're already in the same file, then just drop the import. Easy!
    >
    >
    >
    > By the way:
    >
    > > main() # Call the main function

    >
    > You'll need to put that flush left. At the moment, that call is part
    >
    > of the definition of main().
    >
    >
    >
    > Hope that helps!
    >
    >
    >
    > ChrisA


    It worked! Thanks so much! :)
     
    su29090, Jan 11, 2013
    #7
  8. su29090

    Dave Angel Guest

    On 01/11/2013 05:17 PM, su29090 wrote:
    > I'm trying to import a python file it keeps saying:
    >
    > ImportError: cannot import name Circle
    >
    > Here is the file I'm trying to import:
    >
    > Circle.py
    >
    > import math
    >
    > class circle:
    > #Construct a circle object
    > def __init__(self, radius = 1):
    > self.radius = radius
    >
    > def getPerimeter(self):
    > return 2 * self.radius * math.pi
    >
    > def getArea(self):
    > return self.radius * self.radius * math.pi
    >
    > def setRadius(self, radius):
    > self.radius = radius
    >
    > from Circle import Circle
    >
    > def main():
    > #Create a circle with a radius 1
    > circle1 = Circle()
    > print("The area of the circle of radius",
    > circle1.radius, "is" , circle1.getArea())
    >
    > #Create a circle with a radius 25
    > circle2 = Circle(25)
    > print("The area of the circle of radius",
    > circle2.radius, "is" , circle2.getArea())
    >
    > #Create a circle with a radius 125
    > circle3 = Circle(125)
    > print("The area of the circle of radius",
    > circle3.radius, "is" , circle3.getArea())
    >
    > #Modify circle radius
    > circle2.radius = 100 # or Circle2.setRadius(100)
    > print("The area of the circle of radius",
    > circle2.radius, "is" , circle2.getArea())
    >
    > main() # Call the main function
    >
    > How can I solve this problem?
    >
    > Thanks in advance.
    >


    As Adnan has pointed out, Python is case insensitive. You're apparently
    trying to refer to the class Circle by the name circle, or the other way
    around.

    Some comments on asking clear questions:

    1) Specify the Python version. I presume 3.3 It probably doesn't
    matter here, but it might have.
    2) When showing two source files, identify where each starts and ends,
    and what the second one is called.
    3) When showing an error, include the entire traceback, not just the
    last line.

    Now, there are conventions to follow as well (see Pep8). One is that
    modules should use all lowercase, and classes should begin with a
    capital. So the source file of your module should be named
    circle.py and the class Circle. When you imported and instantiated
    the class, you assumed it was called Circle, but when you defined it,
    you mistakenly called it circle.

    The next error is the accidental indentation of the call to main(). As
    it stands now, it's a recursive call to itself. And main() will never
    be called, because there's no call at top-level.





    --

    DaveA
     
    Dave Angel, Jan 11, 2013
    #8
  9. su29090

    su29090 Guest

    On Friday, January 11, 2013 5:43:10 PM UTC-5, Dave Angel wrote:
    > On 01/11/2013 05:17 PM, su29090 wrote:
    >
    > > I'm trying to import a python file it keeps saying:

    >
    > >

    >
    > > ImportError: cannot import name Circle

    >
    > >

    >
    > > Here is the file I'm trying to import:

    >
    > >

    >
    > > Circle.py

    >
    > >

    >
    > > import math

    >
    > >

    >
    > > class circle:

    >
    > > #Construct a circle object

    >
    > > def __init__(self, radius = 1):

    >
    > > self.radius = radius

    >
    > >

    >
    > > def getPerimeter(self):

    >
    > > return 2 * self.radius * math.pi

    >
    > >

    >
    > > def getArea(self):

    >
    > > return self.radius * self.radius * math.pi

    >
    > >

    >
    > > def setRadius(self, radius):

    >
    > > self.radius = radius

    >
    > >

    >
    > > from Circle import Circle

    >
    > >

    >
    > > def main():

    >
    > > #Create a circle with a radius 1

    >
    > > circle1 = Circle()

    >
    > > print("The area of the circle of radius",

    >
    > > circle1.radius, "is" , circle1.getArea())

    >
    > >

    >
    > > #Create a circle with a radius 25

    >
    > > circle2 = Circle(25)

    >
    > > print("The area of the circle of radius",

    >
    > > circle2.radius, "is" , circle2.getArea())

    >
    > >

    >
    > > #Create a circle with a radius 125

    >
    > > circle3 = Circle(125)

    >
    > > print("The area of the circle of radius",

    >
    > > circle3.radius, "is" , circle3.getArea())

    >
    > >

    >
    > > #Modify circle radius

    >
    > > circle2.radius = 100 # or Circle2.setRadius(100)

    >
    > > print("The area of the circle of radius",

    >
    > > circle2.radius, "is" , circle2.getArea())

    >
    > >

    >
    > > main() # Call the main function

    >
    > >

    >
    > > How can I solve this problem?

    >
    > >

    >
    > > Thanks in advance.

    >
    > >

    >
    >
    >
    > As Adnan has pointed out, Python is case insensitive. You're apparently
    >
    > trying to refer to the class Circle by the name circle, or the other way
    >
    > around.
    >
    >
    >
    > Some comments on asking clear questions:
    >
    >
    >
    > 1) Specify the Python version. I presume 3.3 It probably doesn't
    >
    > matter here, but it might have.
    >
    > 2) When showing two source files, identify where each starts and ends,
    >
    > and what the second one is called.
    >
    > 3) When showing an error, include the entire traceback, not just the
    >
    > last line.
    >
    >
    >
    > Now, there are conventions to follow as well (see Pep8). One is that
    >
    > modules should use all lowercase, and classes should begin with a
    >
    > capital. So the source file of your module should be named
    >
    > circle.py and the class Circle. When you imported and instantiated
    >
    > the class, you assumed it was called Circle, but when you defined it,
    >
    > you mistakenly called it circle.
    >
    >
    >
    > The next error is the accidental indentation of the call to main(). As
    >
    > it stands now, it's a recursive call to itself. And main() will never
    >
    > be called, because there's no call at top-level.
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    > --
    >
    >
    >
    > DaveA


    Thanks for explanation which was very clear!
     
    su29090, Jan 11, 2013
    #9
  10. su29090

    su29090 Guest

    On Friday, January 11, 2013 5:43:10 PM UTC-5, Dave Angel wrote:
    > On 01/11/2013 05:17 PM, su29090 wrote:
    >
    > > I'm trying to import a python file it keeps saying:

    >
    > >

    >
    > > ImportError: cannot import name Circle

    >
    > >

    >
    > > Here is the file I'm trying to import:

    >
    > >

    >
    > > Circle.py

    >
    > >

    >
    > > import math

    >
    > >

    >
    > > class circle:

    >
    > > #Construct a circle object

    >
    > > def __init__(self, radius = 1):

    >
    > > self.radius = radius

    >
    > >

    >
    > > def getPerimeter(self):

    >
    > > return 2 * self.radius * math.pi

    >
    > >

    >
    > > def getArea(self):

    >
    > > return self.radius * self.radius * math.pi

    >
    > >

    >
    > > def setRadius(self, radius):

    >
    > > self.radius = radius

    >
    > >

    >
    > > from Circle import Circle

    >
    > >

    >
    > > def main():

    >
    > > #Create a circle with a radius 1

    >
    > > circle1 = Circle()

    >
    > > print("The area of the circle of radius",

    >
    > > circle1.radius, "is" , circle1.getArea())

    >
    > >

    >
    > > #Create a circle with a radius 25

    >
    > > circle2 = Circle(25)

    >
    > > print("The area of the circle of radius",

    >
    > > circle2.radius, "is" , circle2.getArea())

    >
    > >

    >
    > > #Create a circle with a radius 125

    >
    > > circle3 = Circle(125)

    >
    > > print("The area of the circle of radius",

    >
    > > circle3.radius, "is" , circle3.getArea())

    >
    > >

    >
    > > #Modify circle radius

    >
    > > circle2.radius = 100 # or Circle2.setRadius(100)

    >
    > > print("The area of the circle of radius",

    >
    > > circle2.radius, "is" , circle2.getArea())

    >
    > >

    >
    > > main() # Call the main function

    >
    > >

    >
    > > How can I solve this problem?

    >
    > >

    >
    > > Thanks in advance.

    >
    > >

    >
    >
    >
    > As Adnan has pointed out, Python is case insensitive. You're apparently
    >
    > trying to refer to the class Circle by the name circle, or the other way
    >
    > around.
    >
    >
    >
    > Some comments on asking clear questions:
    >
    >
    >
    > 1) Specify the Python version. I presume 3.3 It probably doesn't
    >
    > matter here, but it might have.
    >
    > 2) When showing two source files, identify where each starts and ends,
    >
    > and what the second one is called.
    >
    > 3) When showing an error, include the entire traceback, not just the
    >
    > last line.
    >
    >
    >
    > Now, there are conventions to follow as well (see Pep8). One is that
    >
    > modules should use all lowercase, and classes should begin with a
    >
    > capital. So the source file of your module should be named
    >
    > circle.py and the class Circle. When you imported and instantiated
    >
    > the class, you assumed it was called Circle, but when you defined it,
    >
    > you mistakenly called it circle.
    >
    >
    >
    > The next error is the accidental indentation of the call to main(). As
    >
    > it stands now, it's a recursive call to itself. And main() will never
    >
    > be called, because there's no call at top-level.
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    > --
    >
    >
    >
    > DaveA


    Thanks for explanation which was very clear!
     
    su29090, Jan 11, 2013
    #10
  11. su29090

    Terry Reedy Guest

    On 1/11/2013 5:17 PM, su29090 wrote:

    > Circle.py
    >
    > import math
    >
    > class circle:


    By current convention, you should call the file 'circle.py' and the
    class 'Circle'. Using all lower case for module filenames is the sanest
    thing to do in a world where different filesystems do different things
    with casing.

    --
    Terry Jan Reedy
     
    Terry Reedy, Jan 12, 2013
    #11
  12. On Sat, Jan 12, 2013 at 3:37 PM, Tim Roberts <> wrote:
    > Dave Angel <> wrote:
    >>
    >>As Adnan has pointed out, Python is case insensitive.

    >
    > That's not really what you meant to say...


    UNinsensitive, your Majesty means, of course. UNinsensitive, of course, I meant.

    *watches the jurors write it down, some each way*

    ChrisA
     
    Chris Angelico, Jan 12, 2013
    #12
  13. su29090

    Dave Angel Guest

    On 01/11/2013 11:37 PM, Tim Roberts wrote:
    > Dave Angel <> wrote:
    >> As Adnan has pointed out, Python is case insensitive.

    > That's not really what you meant to say...

    Nope. I meant Python is case sensitive.

    Thanks for the catch. I think the rest of my discourse made it clear
    that case matters.



    --

    DaveA
     
    Dave Angel, Jan 12, 2013
    #13
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Axel Diener
    Replies:
    0
    Views:
    358
    Axel Diener
    Feb 11, 2004
  2. Marco Aschwanden
    Replies:
    4
    Views:
    288
    Peter Hansen
    Nov 2, 2004
  3. Replies:
    1
    Views:
    374
    David Fraser
    Nov 26, 2004
  4. stefan
    Replies:
    3
    Views:
    447
    stefan
    Dec 8, 2004
  5. plb
    Replies:
    2
    Views:
    364
Loading...

Share This Page