Module Name Conflicts
Robert Kern
rkern at ucsd.edu
Thu Aug 18 19:46:42 EDT 2005
Dan Sommers wrote:
> Assuming you can fiddle with sys.path at the right times, you can call
> an imported module anything you want:
>
> fix_sys_path_to_find_java_cmd_first()
> import cmd as java_cmd
> fix_sys_path_to_find_python_cmd_first()
> import cmd as python_cmd
>
> Obviously, then, 'cmd' does not reference either module; you'd have to
> use java_cmd and python_cmd as appropriate.
That doesn't work. The first module is recorded as 'cmd' in sys.modules
and gets reused on the second import.
[~]$ mkdir foo1
[~]$ mkdir foo2
[~]$ touch foo1/blah.py
[~]$ touch foo2/blah.py
[~]$ python
Python 2.4.1 (#2, Mar 31 2005, 00:05:10)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1666)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.insert(0,'foo1')
>>> import blah as blah1
>>> sys.path.insert(0,'foo2')
>>> import blah as blah2
>>> sys.modules['blah']
<module 'blah' from 'foo1/blah.py'>
>>> blah2.__file__
'foo1/blah.py'
>>>
--
Robert Kern
rkern at ucsd.edu
"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
More information about the Python-list
mailing list