mirror of
https://github.com/python/cpython.git
synced 2025-12-23 09:19:18 +00:00
Consider the following directory structure:
.
└── PATH1
└── namespace
└── sub1
└── __init__.py
And both PATH1 and PATH2 in sys path:
$ PYTHONPATH=PATH1:PATH2 python3.11
>>> import namespace
>>> import namespace.sub1
>>> namespace.__path__
_NamespacePath(['.../PATH1/namespace'])
>>> ...
While this interpreter still runs, PATH2/namespace/sub2 is created:
.
├── PATH1
│ └── namespace
│ └── sub1
│ └── __init__.py
└── PATH2
└── namespace
└── sub2
└── __init__.py
The newly created module cannot be imported:
>>> ...
>>> namespace.__path__
_NamespacePath(['.../PATH1/namespace'])
>>> import namespace.sub2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'namespace.sub2'
Calling importlib.invalidate_caches() now newly allows to import it:
>>> import importlib
>>> importlib.invalidate_caches()
>>> namespace.__path__
_NamespacePath(['.../PATH1/namespace'])
>>> import namespace.sub2
>>> namespace.__path__
_NamespacePath(['.../PATH1/namespace', '.../PATH2/namespace'])
This was not previously possible.
|
||
|---|---|---|
| .. | ||
| asyncio | ||
| collections | ||
| concurrent | ||
| ctypes | ||
| curses | ||
| dbm | ||
| distutils | ||
| encodings | ||
| ensurepip | ||
| html | ||
| http | ||
| idlelib | ||
| importlib | ||
| json | ||
| lib2to3 | ||
| logging | ||
| msilib | ||
| multiprocessing | ||
| pydoc_data | ||
| site-packages | ||
| sqlite3 | ||
| test | ||
| tkinter | ||
| turtledemo | ||
| unittest | ||
| urllib | ||
| venv | ||
| wsgiref | ||
| xml | ||
| xmlrpc | ||
| zoneinfo | ||
| __future__.py | ||
| __phello__.foo.py | ||
| _aix_support.py | ||
| _bootsubprocess.py | ||
| _collections_abc.py | ||
| _compat_pickle.py | ||
| _compression.py | ||
| _markupbase.py | ||
| _osx_support.py | ||
| _py_abc.py | ||
| _pydecimal.py | ||
| _pyio.py | ||
| _sitebuiltins.py | ||
| _strptime.py | ||
| _threading_local.py | ||
| _weakrefset.py | ||
| abc.py | ||
| aifc.py | ||
| antigravity.py | ||
| argparse.py | ||
| ast.py | ||
| asynchat.py | ||
| asyncore.py | ||
| base64.py | ||
| bdb.py | ||
| binhex.py | ||
| bisect.py | ||
| bz2.py | ||
| calendar.py | ||
| cgi.py | ||
| cgitb.py | ||
| chunk.py | ||
| cmd.py | ||
| code.py | ||
| codecs.py | ||
| codeop.py | ||
| colorsys.py | ||
| compileall.py | ||
| configparser.py | ||
| contextlib.py | ||
| contextvars.py | ||
| copy.py | ||
| copyreg.py | ||
| cProfile.py | ||
| crypt.py | ||
| csv.py | ||
| dataclasses.py | ||
| datetime.py | ||
| decimal.py | ||
| difflib.py | ||
| dis.py | ||
| doctest.py | ||
| enum.py | ||
| filecmp.py | ||
| fileinput.py | ||
| fnmatch.py | ||
| fractions.py | ||
| ftplib.py | ||
| functools.py | ||
| genericpath.py | ||
| getopt.py | ||
| getpass.py | ||
| gettext.py | ||
| glob.py | ||
| graphlib.py | ||
| gzip.py | ||
| hashlib.py | ||
| heapq.py | ||
| hmac.py | ||
| imaplib.py | ||
| imghdr.py | ||
| imp.py | ||
| inspect.py | ||
| io.py | ||
| ipaddress.py | ||
| keyword.py | ||
| linecache.py | ||
| locale.py | ||
| lzma.py | ||
| mailbox.py | ||
| mailcap.py | ||
| mimetypes.py | ||
| modulefinder.py | ||
| netrc.py | ||
| nntplib.py | ||
| ntpath.py | ||
| nturl2path.py | ||
| numbers.py | ||
| opcode.py | ||
| operator.py | ||
| optparse.py | ||
| os.py | ||
| pathlib.py | ||
| pdb.py | ||
| pickle.py | ||
| pickletools.py | ||
| pipes.py | ||
| pkgutil.py | ||
| platform.py | ||
| plistlib.py | ||
| poplib.py | ||
| posixpath.py | ||
| pprint.py | ||
| profile.py | ||
| pstats.py | ||
| pty.py | ||
| py_compile.py | ||
| pyclbr.py | ||
| pydoc.py | ||
| queue.py | ||
| quopri.py | ||
| random.py | ||
| re.py | ||
| reprlib.py | ||
| rlcompleter.py | ||
| runpy.py | ||
| sched.py | ||
| secrets.py | ||
| selectors.py | ||
| shelve.py | ||
| shlex.py | ||
| shutil.py | ||
| signal.py | ||
| site.py | ||
| smtpd.py | ||
| smtplib.py | ||
| sndhdr.py | ||
| socket.py | ||
| socketserver.py | ||
| sre_compile.py | ||
| sre_constants.py | ||
| sre_parse.py | ||
| ssl.py | ||
| stat.py | ||
| statistics.py | ||
| string.py | ||
| stringprep.py | ||
| struct.py | ||
| subprocess.py | ||
| sunau.py | ||
| symtable.py | ||
| sysconfig.py | ||
| tabnanny.py | ||
| tarfile.py | ||
| telnetlib.py | ||
| tempfile.py | ||
| textwrap.py | ||
| this.py | ||
| threading.py | ||
| timeit.py | ||
| token.py | ||
| tokenize.py | ||
| trace.py | ||
| traceback.py | ||
| tracemalloc.py | ||
| tty.py | ||
| turtle.py | ||
| types.py | ||
| typing.py | ||
| uu.py | ||
| uuid.py | ||
| warnings.py | ||
| wave.py | ||
| weakref.py | ||
| webbrowser.py | ||
| xdrlib.py | ||
| zipapp.py | ||
| zipfile.py | ||
| zipimport.py | ||