Why 'import module' will not import module.py but the directory module?

Why 'import module' will not import module.py but the directory module?

Post by Peng Y » Mon, 02 Nov 2009 08:51:48


If I have both the directory 'module' and the file 'module.py' in a
directory in $PYTHONPATH, python will import 'module' rather than
'module.py'. I'm wondering what is the design rationale of setting
higher priorities to directories. Is there a way to reverse the
priority?
 
 
 

Why 'import module' will not import module.py but the directory module?

Post by Robert Ker » Mon, 02 Nov 2009 09:02:57


You mean that you have a package "module/"? With an __init__.py? Plain
directories that aren't packages shouldn't be imported by Python.

No, you can't reverse the priority between packages and modules. I'm not sure
why that would help you. The package would then be inaccessible if you did. If
it's inaccessible, then why have it at all?

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

 
 
 

Why 'import module' will not import module.py but the directory module?

Post by Peng Y » Mon, 02 Nov 2009 09:16:06


Yes. I mean a pakcage 'module/' with an __init__.py.


Why the package 'module' has to be inaccessible? I can 'import
module.part1' to access the component of the package.
 
 
 

Why 'import module' will not import module.py but the directory module?

Post by Robert Ker » Mon, 02 Nov 2009 09:29:43


No, it wouldn't. It's a moot point because Python picks the package first, but
if it did pick modules before packages, then sys.modules['module'] would point
to the module from module.py and not module/__init__.py . "import module.part1"
first executes "import module", then looks in there to determine who to resolve
"module.part1". Since sys.modules['module'] is a regular module and not the
package, it wouldn't find module/part1.py .

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
 
 
 

Why 'import module' will not import module.py but the directory module?

Post by Colin W » Tue, 03 Nov 2009 08:32:14


Doesn't it make sense to avoid the use of names like module or package,
even though they are permitted.

Colin W.