How to import the class within the same directory or sub directory?

Python Programming

Question or problem about Python programming:

I have a directory that stores all the .py files.

bin/ # where class User resides # where class Dir resides

I want to use classes from and in
How can I import these Python classes into
Furthermore, how can I import class User if is in a sub directory?


How to solve the problem:

Solution 1:

Python 2

Make an empty file called in the same directory as the files. That will signify to Python that it’s “ok to import from this directory”.

Then just do…

from user import User
from dir import Dir

The same holds true if the files are in a subdirectory – put an in the subdirectory as well, and then use regular import statements, with dot notation. For each level of directory, you need to add to the import path.


So if the directory was named “classes”, then you’d do this:

from classes.user import User
from classes.dir import Dir

Python 3

Same as previous, but prefix the module name with a . if not using a subdirectory:

from .user import User
from .dir import Dir

Solution 2:

I just learned (thanks to martineau’s comment) that, in order to import classes from files within the same directory, you would now write in Python 3:

from .user import User
from .dir import Dir

Solution 3:

In your

from user import Class

where Class is the name of the class you want to import.

If you want to call a method of Class, you can call it using:


Note that there should be an empty file in the same directory.

Solution 4:

In python3, is no longer necessary. If the current directory of the console is the directory where the python script is located, everything works fine with

import user

However, this won’t work if called from a different directory, which does not contain
In that case, use

from . import user

This works even if you want to import the whole file instead of just a class from there.

Solution 5:

You can import the module and have access through its name if you don’t want to mix functions and classes with yours

import util # imports


or you can import the functions and classes to your code

from util import clean, setup

you can use wildchar * to import everything in that module to your code

from util import *

Hope this helps!