5

I feel like I should know this, having programmed in Python for as long as I have, but I'm constantly learning new things about the fine lanuaguge. The question I have (which may very well be a duplicate, however I haven't been able to find this same case) is this. I have a file layout like this:

websocket/
    __init__.py
    client.py
    server.py

How can I import classes that are in the file __init__.py from client.py or server.py? Nice and simple :P Thanks in advance! My question isn't a duplicate of this because I am importing from inside the package, and at any rate, doing what the people did in the answer did not help at all.

Jerfov2
  • 5,264
  • 5
  • 30
  • 52

1 Answers1

2

Names defined in a package __init__.py file are available as names in the package namespace itself.

Therefore, if you have a Connection class in your __init__ package, from inside the package you do import it the same way one making use of your package would: refer to it by the package name as in

from websocket import Connection

If for some reason your package is not configured in your pythonpath, or your directory name can change you can use a relative import - in that case, refer to the current package just as . that means that in your client.py you can just do:

from . import Connection
brian d foy
  • 129,424
  • 31
  • 207
  • 592
jsbueno
  • 99,910
  • 10
  • 151
  • 209
  • Thanks, I know what the problem was. I was trying to run `client.py` as the main file, and that didn't sit well with the interpreter for some reason. – Jerfov2 Jul 04 '15 at 13:57