Reputation: 270
So, I am having the following structure in my python package:
./main.py
__init__.py
./mymods/
__init__.py
a.py
b.py
my module a.py imports module b:
import b
Now, I want to import module a from main but when I do I get the following:
import mymods.a
ImportError: No module named 'b'
I googled but I couldn't find a solution to this particular problem. Any good samaritan who knows how to do this?
p.s. I would prefer not to have to import the module b explicitly from main, if that is possible.
Upvotes: 1
Views: 95
Reputation: 11585
You need to make mymods
into a package.
This can be done simply by creating an empty __init__.py
file in the directory.
➜ tree
.
├── main.py
└── mymods
├── __init__.py
├── a.py
└── b.py
1 directory, 4 files
➜ cat main.py
import mymods.a
print 'printing from main'
➜ cat mymods/a.py
from . import b
print 'printing from a'
➜ cat mymods/b.py
print 'printing from b
➜ python main.py
printing from b
printing from a
printing from main
For Python 3, change the import b
to from . import b
.
Upvotes: 2
Reputation: 22021
Basically you have to add empty __init__.py
file into each folder within your py project.
See more on What is __init__.py for?
Upvotes: 0