pitosalas
pitosalas

Reputation: 10882

Simple case of __init__.py and import giving mysterious module not found

I've tried this from so many different angles but can't sort it out. Must be such a simple case. In Python 3.7.6:

Directory structure:

./modtest/
./modtest/__init__.py
./modtest/test1.py
./modtest/test2.py

test1.py:

import modtest
def x(i):
   print(i)
   y(i)    

test2.py:

def y(i):
   print(i)

__init__.py is an empty file.

When I attempt to run the code:

$ /Users/pitosalas/miniconda3/bin/python /Users/pitosalas/mydev/rsb_py/modtest/test1.py
Traceback (most recent call last):
  File "/Users/pitosalas/mydev/rsb_py/modtest/test1.py", line 1, in <module>
    import modtest
ModuleNotFoundError: No module named 'modtest

From what I read this should've worked. I'm sure there's something trivial wrong!

Upvotes: 0

Views: 73

Answers (1)

moctarjallo
moctarjallo

Reputation: 1615

You are importing modtest in test1.py while this module itself resides inside of modtest. This can't be because modest wouldn't have yet been defined and added to the search path. So this is what you should have actually:

./modtest/
./modtest/__init__.py
./modtest/
./modtest/test2.py
./test1.py  # this module must be outside of modtest

Upvotes: 1

Related Questions