6

I have a folder structure like this

main_folder | |--done | | | |--test1 | |--__init__.py | |---check.py 

__init__.py:

class Tries(object): def __init__(self): print "Test" 

check.py:

from done.test1 import Tries Tries() 

Error:

--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-8-10953298e1df> in <module>() ----> 1 from done.test1 import Tries ImportError: No module named done.test1 

I am not able to import modules from the nested folder. Is there any way to do this.

Edit:

After Salva's answer I changed my structure like this

. ├── check.py |--__init__.py(no content) └── done ├── __init__.py(no content) └── test1 └── __init__.py <-- this files contains your Tries class 

Same error is thrown now also.

0

3 Answers 3

9

You need a file __init__.py in each directory you want it to be considered a package so you need it in both directories:

. ├── check.py └── done ├── __init__.py └── test1 └── __init__.py <-- this files contains your Tries class 
Sign up to request clarification or add additional context in comments.

1 Comment

Do you have *.pyc files in your hierarchy? Try to delete them.
1

In the following file/folder structure your code just works here:

. ├── check.py └── done └── test1.py 

When I run check.py it prints Test. I didn't use __init__.py though. What you described as __init__.py I made test1.py.

1 Comment

I tested it in Spyder, maybe it takes care of some stuff in the background?
1

Try to import package done first

import done 

If it doesn't work, probably you are running script from different folder than you specified (in this case main_folder)

From logs it seems like you are using IPython, in this case try to add your folder as module path

import sys sys.path.append('path/to/your/main_folder') import done 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.