From: M.-H. Z on
Hello dear Python hackers.
I have a pretty stupid problem that I cannot solve despite all my
efforts: Python cannot find my modules. I am sure the answer is
obvious, but I cannot find it.
The problem is simple, here is a toy example (which does not work).
I have a file:
---
import sys
print sys.path
import module2
import mod.module1
if __name__ == "__main__":
print "OK"
---
I have something like
---
print "I am in module X"
---
for the files moduleX.py.
The file hierarchy is the following:
"." (which is "C:\Documents and Settings\Administrateur\Bureau\Test")
contains "test.py" (the main file), "module2.py", "module2.pyc" and
the directory "mod". This directory contains "__init.py__" (empty) and
"module1.py".
I put the current path (again: "C:\Documents and Settings
\Administrateur\Bureau\Test") into the PYTHONPATH environment variable
(using "set" and the Control Panel) and I added the path into the
PythonPath registers (just in case).
The output of the execution still is:
---
['C:\\Documents and Settings\\Administrateur\\Bureau\Test', ...]
I am in module 2
Traceback (most recent call last):
File "test.py", line 6 in (module)
from mod import module
ImportError: No module named mod
---
I really do not know where the error is. It works perfectly well under
Linux and Mac.
Could anyone help me there?
Thanks a lot,
Matthias.
From: Peter Otten on
M.-H. Z wrote:

> the directory "mod". This directory contains "__init.py__" (empty) and

Rename "__init.py__" to "__init__.py".
From: M.-H. Z on
Darn! That was it!
I was pretty stupid!
I swear I will stop drinking vodka before 8am.
However, it does not solve the problem on my main project (which was
not this toy example of course), since the names were correct there.
Keep on working.
Thanks a lot, Peter, for reading my long post and helping me.
Matthias.
From: Dave Angel on
M.-H. Z wrote:
> Hello dear Python hackers.
> I have a pretty stupid problem that I cannot solve despite all my
> efforts: Python cannot find my modules. I am sure the answer is
> obvious, but I cannot find it.
> The problem is simple, here is a toy example (which does not work).
> I have a file:
> ---
> import sys
> print sys.path
> import module2
> import mod.module1
> if __name__ == "__main__":
> print "OK"
> ---
> I have something like
> ---
> print "I am in module X"
> ---
> for the files moduleX.py.
> The file hierarchy is the following:
> "." (which is "C:\Documents and Settings\Administrateur\Bureau\Test")
> contains "test.py" (the main file), "module2.py", "module2.pyc" and
> the directory "mod". This directory contains "__init.py__" (empty) and
> "module1.py".
> I put the current path (again: "C:\Documents and Settings
> \Administrateur\Bureau\Test") into the PYTHONPATH environment variable
> (using "set" and the Control Panel) and I added the path into the
> PythonPath registers (just in case).
> The output of the execution still is:
> ---
> ['C:\\Documents and Settings\\Administrateur\\Bureau\Test', ...]
> I am in module 2
> Traceback (most recent call last):
> File "test.py", line 6 in (module)
> from mod import module
> ImportError: No module named mod
> ---
> I really do not know where the error is. It works perfectly well under
> Linux and Mac.
> Could anyone help me there?
> Thanks a lot,
> Matthias.
>
>
Probably the error is that you're not posting the same code as you're
executing. The error message refers to a line:
from mod import module

which is wrong in two ways. But in your source, you show
import mod.module1

which I expect should work. (I didn't try it)


So run the source you posted, and if it still fails, show us the
traceback from that same code. Then somebody will spot the problem.

HTH
DaveA

From: M.-H. Z on
Dear Dave,
You are absolutely right!
I changed my code so many times that I got confused when writing the
post.
Actually, I tried "from mod import module1" and "import mod.module1".
Of course, they led to the same error: the one that Peter pointed.
Anyway, thanks a lot for your help!
Matthias.
(Yet, I did not find the mistake in my project... But I still cannot
precisely locate it from whole lot of modules that I use.)