I have two directories, lib1 and lib2, that both contain the package foo, one with the submodule mod1 and the other with the submodule mod2:
$ ls lib*/foo/ lib1/foo/: __init__.py __init__.pyc mod1.py mod1.pyc lib2/foo/: __init__.py __init__.pyc mod2.py mod2.pyc $ Now this script: import sys sys.path.append("lib1") sys.path.append("lib2") import foo.mod1 will find the module foo.mod1, while the same script with the two append-lines interchanged will not: import sys sys.path.append("lib2") sys.path.append("lib1") import foo.mod1 The error is: import foo.mod1 ImportError: No module named mod1 So I guess that when Python finds the package foo, it will not look for it again using the rest of the search path, even if at that first place the module could not be found. Other languages like e.g. Java would find the module mod1 in the second case too (if Java doesn't find it in the first place, it will also look for it in the second place). This behaviour of Python is very unfortunate, because you always have to merge your package trees. In my cvs I have several packages, each in its own cvs module, all starting with de.science_computing. Now if I need two of them in a new project, I will have two package trees in my cvs sandbox, both starting with de.science_computing. Leaving the sandbox that way, cvs will work but Python imports will fail while if I merge all the package trees, Python will work but cvs won't. My questions: - Have I done anything wrong? - If not, is this behaviour of Python a bug or intentional? - If it it intentional, what is the intent? Thank you for your help Boris -- http://mail.python.org/mailman/listinfo/python-list