Hacker News new | past | comments | ask | show | jobs | submit login

Example:

  $ cat spam.py
  import sys
  print(f'__name__ = {__name__!r}')
  for (name, mod) in sys.modules.items():
      try:
          if 'spam' not in (mod.__file__ or ''):
              continue
      except AttributeError:
          continue
      print(f'sys.modules[{name!r}] = {mod!r} @ 0x{id(mod):x}')
  import spam
  
  $ python3 -m spam
  __name__ = '__main__'
  sys.modules['__main__'] = <module 'spam' from '/home/jwilk/spam.py'> @ 0xf7d86ed8
  __name__ = 'spam'
  sys.modules['__main__'] = <module 'spam' from '/home/jwilk/spam.py'> @ 0xf7d86ed8
  sys.modules['spam'] = <module 'spam' from '/home/jwilk/spam.py'> @ 0xf7caef78
More generally, Python is happy to import the same file multiple times as long as the module name is different.

For example, if there's eggs/bacon/spam.py and you add both "eggs" and "eggs/bacon" to sys.path, you will have two different modules imported after "import bacon.spam, spam".




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: