Psyduck - 可達鴨 之 鴨力山大2


Server : LiteSpeed
System : Linux premium217.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User : alloknri ( 880)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /opt/alt/python33/lib64/python3.3/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python33/lib64/python3.3/runpy.py
"""runpy.py - locating and running Python code using the module namespace

Provides support for locating and running Python scripts using the Python
module namespace instead of the native filesystem.

This allows Python code to play nicely with non-filesystem based PEP 302
importers when locating support scripts as well as when importing modules.
"""
# Written by Nick Coghlan <ncoghlan at gmail.com>
#    to implement PEP 338 (Executing Modules as Scripts)


import os
import sys
import importlib.machinery # importlib first so we can test #15386 via -m
import imp
from pkgutil import read_code, get_loader, get_importer

__all__ = [
    "run_module", "run_path",
]

class _TempModule(object):
    """Temporarily replace a module in sys.modules with an empty namespace"""
    def __init__(self, mod_name):
        self.mod_name = mod_name
        self.module = imp.new_module(mod_name)
        self._saved_module = []

    def __enter__(self):
        mod_name = self.mod_name
        try:
            self._saved_module.append(sys.modules[mod_name])
        except KeyError:
            pass
        sys.modules[mod_name] = self.module
        return self

    def __exit__(self, *args):
        if self._saved_module:
            sys.modules[self.mod_name] = self._saved_module[0]
        else:
            del sys.modules[self.mod_name]
        self._saved_module = []

class _ModifiedArgv0(object):
    def __init__(self, value):
        self.value = value
        self._saved_value = self._sentinel = object()

    def __enter__(self):
        if self._saved_value is not self._sentinel:
            raise RuntimeError("Already preserving saved value")
        self._saved_value = sys.argv[0]
        sys.argv[0] = self.value

    def __exit__(self, *args):
        self.value = self._sentinel
        sys.argv[0] = self._saved_value

def _run_code(code, run_globals, init_globals=None,
              mod_name=None, mod_fname=None,
              mod_loader=None, pkg_name=None):
    """Helper to run code in nominated namespace"""
    if init_globals is not None:
        run_globals.update(init_globals)
    run_globals.update(__name__ = mod_name,
                       __file__ = mod_fname,
                       __cached__ = None,
                       __doc__ = None,
                       __loader__ = mod_loader,
                       __package__ = pkg_name)
    exec(code, run_globals)
    return run_globals

def _run_module_code(code, init_globals=None,
                    mod_name=None, mod_fname=None,
                    mod_loader=None, pkg_name=None):
    """Helper to run code in new namespace with sys modified"""
    with _TempModule(mod_name) as temp_module, _ModifiedArgv0(mod_fname):
        mod_globals = temp_module.module.__dict__
        _run_code(code, mod_globals, init_globals,
                  mod_name, mod_fname, mod_loader, pkg_name)
    # Copy the globals of the temporary module, as they
    # may be cleared when the temporary module goes away
    return mod_globals.copy()


# This helper is needed due to a missing component in the PEP 302
# loader protocol (specifically, "get_filename" is non-standard)
# Since we can't introduce new features in maintenance releases,
# support was added to zipimporter under the name '_get_filename'
def _get_filename(loader, mod_name):
    for attr in ("get_filename", "_get_filename"):
        meth = getattr(loader, attr, None)
        if meth is not None:
            return os.path.abspath(meth(mod_name))
    return None

# Helper to get the loader, code and filename for a module
def _get_module_details(mod_name):
    loader = get_loader(mod_name)
    if loader is None:
        raise ImportError("No module named %s" % mod_name)
    if loader.is_package(mod_name):
        if mod_name == "__main__" or mod_name.endswith(".__main__"):
            raise ImportError("Cannot use package as __main__ module")
        try:
            pkg_main_name = mod_name + ".__main__"
            return _get_module_details(pkg_main_name)
        except ImportError as e:
            raise ImportError(("%s; %r is a package and cannot " +
                               "be directly executed") %(e, mod_name))
    code = loader.get_code(mod_name)
    if code is None:
        raise ImportError("No code object available for %s" % mod_name)
    filename = _get_filename(loader, mod_name)
    return mod_name, loader, code, filename

# XXX ncoghlan: Should this be documented and made public?
# (Current thoughts: don't repeat the mistake that lead to its
# creation when run_module() no longer met the needs of
# mainmodule.c, but couldn't be changed because it was public)
def _run_module_as_main(mod_name, alter_argv=True):
    """Runs the designated module in the __main__ namespace

       Note that the executed module will have full access to the
       __main__ namespace. If this is not desirable, the run_module()
       function should be used to run the module code in a fresh namespace.

       At the very least, these variables in __main__ will be overwritten:
           __name__
           __file__
           __cached__
           __loader__
           __package__
    """
    try:
        if alter_argv or mod_name != "__main__": # i.e. -m switch
            mod_name, loader, code, fname = _get_module_details(mod_name)
        else:          # i.e. directory or zipfile execution
            mod_name, loader, code, fname = _get_main_module_details()
    except ImportError as exc:
        # Try to provide a good error message
        # for directories, zip files and the -m switch
        if alter_argv:
            # For -m switch, just display the exception
            info = str(exc)
        else:
            # For directories/zipfiles, let the user
            # know what the code was looking for
            info = "can't find '__main__' module in %r" % sys.argv[0]
        msg = "%s: %s" % (sys.executable, info)
        sys.exit(msg)
    pkg_name = mod_name.rpartition('.')[0]
    main_globals = sys.modules["__main__"].__dict__
    if alter_argv:
        sys.argv[0] = fname
    return _run_code(code, main_globals, None,
                     "__main__", fname, loader, pkg_name)

def run_module(mod_name, init_globals=None,
               run_name=None, alter_sys=False):
    """Execute a module's code without importing it

       Returns the resulting top level namespace dictionary
    """
    mod_name, loader, code, fname = _get_module_details(mod_name)
    if run_name is None:
        run_name = mod_name
    pkg_name = mod_name.rpartition('.')[0]
    if alter_sys:
        return _run_module_code(code, init_globals, run_name,
                                fname, loader, pkg_name)
    else:
        # Leave the sys module alone
        return _run_code(code, {}, init_globals, run_name,
                         fname, loader, pkg_name)

def _get_main_module_details():
    # Helper that gives a nicer error message when attempting to
    # execute a zipfile or directory by invoking __main__.py
    # Also moves the standard __main__ out of the way so that the
    # preexisting __loader__ entry doesn't cause issues
    main_name = "__main__"
    saved_main = sys.modules[main_name]
    del sys.modules[main_name]
    try:
        return _get_module_details(main_name)
    except ImportError as exc:
        if main_name in str(exc):
            raise ImportError("can't find %r module in %r" %
                              (main_name, sys.path[0])) from exc
        raise
    finally:
        sys.modules[main_name] = saved_main


def _get_code_from_file(run_name, fname):
    # Check for a compiled file first
    with open(fname, "rb") as f:
        code = read_code(f)
    if code is None:
        # That didn't work, so try it as normal source code
        with open(fname, "rb") as f:
            code = compile(f.read(), fname, 'exec')
            loader = importlib.machinery.SourceFileLoader(run_name, fname)
    else:
        loader = importlib.machinery.SourcelessFileLoader(run_name, fname)
    return code, loader

def run_path(path_name, init_globals=None, run_name=None):
    """Execute code located at the specified filesystem location

       Returns the resulting top level namespace dictionary

       The file path may refer directly to a Python script (i.e.
       one that could be directly executed with execfile) or else
       it may refer to a zipfile or directory containing a top
       level __main__.py script.
    """
    if run_name is None:
        run_name = "<run_path>"
    pkg_name = run_name.rpartition(".")[0]
    importer = get_importer(path_name)
    if isinstance(importer, (type(None), imp.NullImporter)):
        # Not a valid sys.path entry, so run the code directly
        # execfile() doesn't help as we want to allow compiled files
        code, mod_loader = _get_code_from_file(run_name, path_name)
        return _run_module_code(code, init_globals, run_name, path_name,
                                mod_loader, pkg_name)
    else:
        # Importer is defined for path, so add it to
        # the start of sys.path
        sys.path.insert(0, path_name)
        try:
            # Here's where things are a little different from the run_module
            # case. There, we only had to replace the module in sys while the
            # code was running and doing so was somewhat optional. Here, we
            # have no choice and we have to remove it even while we read the
            # code. If we don't do this, a __loader__ attribute in the
            # existing __main__ module may prevent location of the new module.
            mod_name, loader, code, fname = _get_main_module_details()
            with _TempModule(run_name) as temp_module, \
                 _ModifiedArgv0(path_name):
                mod_globals = temp_module.module.__dict__
                return _run_code(code, mod_globals, init_globals,
                                    run_name, fname, loader, pkg_name).copy()
        finally:
            try:
                sys.path.remove(path_name)
            except ValueError:
                pass


if __name__ == "__main__":
    # Run the module specified as the next command line argument
    if len(sys.argv) < 2:
        print("No module specified for execution", file=sys.stderr)
    else:
        del sys.argv[0] # Make the requested module sys.argv[0]
        _run_module_as_main(sys.argv[0])
Name
Size
Permissions
Options
__pycache__
--
drwxr-xr-x
collections
--
drwxr-xr-x
concurrent
--
drwxr-xr-x
config-3.3m
--
drwxr-xr-x
ctypes
--
drwxr-xr-x
curses
--
drwxr-xr-x
dbm
--
drwxr-xr-x
distutils
--
drwxr-xr-x
email
--
drwxr-xr-x
encodings
--
drwxr-xr-x
html
--
drwxr-xr-x
http
--
drwxr-xr-x
idlelib
--
drwxr-xr-x
importlib
--
drwxr-xr-x
json
--
drwxr-xr-x
lib-dynload
--
drwxr-xr-x
lib2to3
--
drwxr-xr-x
logging
--
drwxr-xr-x
multiprocessing
--
drwxr-xr-x
plat-linux
--
drwxr-xr-x
pydoc_data
--
drwxr-xr-x
site-packages
--
drwxr-xr-x
sqlite3
--
drwxr-xr-x
test
--
drwxr-xr-x
unittest
--
drwxr-xr-x
urllib
--
drwxr-xr-x
venv
--
drwxr-xr-x
wsgiref
--
drwxr-xr-x
xml
--
drwxr-xr-x
xmlrpc
--
drwxr-xr-x
__future__.py
4.477 KB
-rw-r--r--
__phello__.foo.py
0.063 KB
-rw-r--r--
_compat_pickle.py
4.236 KB
-rw-r--r--
_dummy_thread.py
4.657 KB
-rw-r--r--
_markupbase.py
14.256 KB
-rw-r--r--
_osx_support.py
18.413 KB
-rw-r--r--
_pyio.py
71.196 KB
-rw-r--r--
_strptime.py
21.166 KB
-rw-r--r--
_sysconfigdata.py
22.307 KB
-rw-r--r--
_threading_local.py
7.236 KB
-rw-r--r--
_weakrefset.py
5.571 KB
-rw-r--r--
abc.py
7.868 KB
-rw-r--r--
aifc.py
30.326 KB
-rw-r--r--
antigravity.py
0.464 KB
-rw-r--r--
argparse.py
86.981 KB
-rw-r--r--
ast.py
11.857 KB
-rw-r--r--
asynchat.py
11.316 KB
-rw-r--r--
asyncore.py
20.267 KB
-rw-r--r--
base64.py
13.658 KB
-rwxr-xr-x
bdb.py
21.381 KB
-rw-r--r--
binhex.py
13.387 KB
-rw-r--r--
bisect.py
2.534 KB
-rw-r--r--
bz2.py
18.04 KB
-rw-r--r--
cProfile.py
6.212 KB
-rwxr-xr-x
calendar.py
22.402 KB
-rw-r--r--
cgi.py
34.721 KB
-rwxr-xr-x
cgitb.py
11.759 KB
-rw-r--r--
chunk.py
5.251 KB
-rw-r--r--
cmd.py
14.512 KB
-rw-r--r--
code.py
9.795 KB
-rw-r--r--
codecs.py
35.113 KB
-rw-r--r--
codeop.py
5.854 KB
-rw-r--r--
colorsys.py
3.604 KB
-rw-r--r--
compileall.py
9.515 KB
-rw-r--r--
configparser.py
48.278 KB
-rw-r--r--
contextlib.py
8.911 KB
-rw-r--r--
copy.py
8.78 KB
-rw-r--r--
copyreg.py
6.456 KB
-rw-r--r--
crypt.py
1.835 KB
-rw-r--r--
csv.py
15.806 KB
-rw-r--r--
datetime.py
73.197 KB
-rw-r--r--
decimal.py
223.201 KB
-rw-r--r--
difflib.py
80.585 KB
-rw-r--r--
dis.py
9.896 KB
-rw-r--r--
doctest.py
100.521 KB
-rw-r--r--
dummy_threading.py
2.749 KB
-rw-r--r--
filecmp.py
9.372 KB
-rw-r--r--
fileinput.py
13.922 KB
-rw-r--r--
fnmatch.py
3.089 KB
-rw-r--r--
formatter.py
14.58 KB
-rw-r--r--
fractions.py
22.493 KB
-rw-r--r--
ftplib.py
39.31 KB
-rw-r--r--
functools.py
13.277 KB
-rw-r--r--
genericpath.py
3.021 KB
-rw-r--r--
getopt.py
7.313 KB
-rw-r--r--
getpass.py
5.657 KB
-rw-r--r--
gettext.py
20.153 KB
-rw-r--r--
glob.py
2.771 KB
-rw-r--r--
gzip.py
23.831 KB
-rw-r--r--
hashlib.py
6.048 KB
-rw-r--r--
heapq.py
17.575 KB
-rw-r--r--
hmac.py
4.336 KB
-rw-r--r--
imaplib.py
48.937 KB
-rw-r--r--
imghdr.py
3.445 KB
-rw-r--r--
imp.py
9.499 KB
-rw-r--r--
inspect.py
77.109 KB
-rw-r--r--
io.py
3.203 KB
-rw-r--r--
ipaddress.py
68.655 KB
-rw-r--r--
keyword.py
2.012 KB
-rwxr-xr-x
linecache.py
3.773 KB
-rw-r--r--
locale.py
91.03 KB
-rw-r--r--
lzma.py
17.045 KB
-rw-r--r--
macpath.py
5.485 KB
-rw-r--r--
macurl2path.py
2.668 KB
-rw-r--r--
mailbox.py
77.239 KB
-rw-r--r--
mailcap.py
7.263 KB
-rw-r--r--
mimetypes.py
20.249 KB
-rw-r--r--
modulefinder.py
22.654 KB
-rw-r--r--
netrc.py
5.612 KB
-rw-r--r--
nntplib.py
41.783 KB
-rw-r--r--
ntpath.py
19.958 KB
-rw-r--r--
nturl2path.py
2.34 KB
-rw-r--r--
numbers.py
10.154 KB
-rw-r--r--
opcode.py
4.979 KB
-rw-r--r--
optparse.py
58.932 KB
-rw-r--r--
os.py
33.964 KB
-rw-r--r--
os2emxpath.py
4.55 KB
-rw-r--r--
pdb.py
59.231 KB
-rwxr-xr-x
pickle.py
46.736 KB
-rw-r--r--
pickletools.py
79.442 KB
-rw-r--r--
pipes.py
8.707 KB
-rw-r--r--
pkgutil.py
21.034 KB
-rw-r--r--
platform.py
49.553 KB
-rwxr-xr-x
plistlib.py
14.431 KB
-rw-r--r--
poplib.py
11.105 KB
-rw-r--r--
posixpath.py
13.92 KB
-rw-r--r--
pprint.py
12.402 KB
-rw-r--r--
profile.py
20.945 KB
-rwxr-xr-x
pstats.py
25.754 KB
-rw-r--r--
pty.py
4.937 KB
-rw-r--r--
py_compile.py
6.56 KB
-rw-r--r--
pyclbr.py
13.123 KB
-rw-r--r--
pydoc.py
99.262 KB
-rwxr-xr-x
queue.py
8.628 KB
-rw-r--r--
quopri.py
7.144 KB
-rwxr-xr-x
random.py
25.059 KB
-rw-r--r--
re.py
14.622 KB
-rw-r--r--
reprlib.py
4.99 KB
-rw-r--r--
rlcompleter.py
5.396 KB
-rw-r--r--
runpy.py
10.169 KB
-rw-r--r--
sched.py
6.249 KB
-rw-r--r--
shelve.py
8.05 KB
-rw-r--r--
shlex.py
11.232 KB
-rw-r--r--
shutil.py
38.229 KB
-rw-r--r--
site.py
21.456 KB
-rw-r--r--
smtpd.py
29.499 KB
-rwxr-xr-x
smtplib.py
37.13 KB
-rwxr-xr-x
sndhdr.py
6.073 KB
-rw-r--r--
socket.py
14.563 KB
-rw-r--r--
socketserver.py
23.629 KB
-rw-r--r--
sre_compile.py
15.962 KB
-rw-r--r--
sre_constants.py
7.062 KB
-rw-r--r--
sre_parse.py
29.504 KB
-rw-r--r--
ssl.py
23.904 KB
-rw-r--r--
stat.py
4.203 KB
-rw-r--r--
string.py
9.189 KB
-rw-r--r--
stringprep.py
12.614 KB
-rw-r--r--
struct.py
0.232 KB
-rw-r--r--
subprocess.py
65.994 KB
-rw-r--r--
sunau.py
17.112 KB
-rw-r--r--
symbol.py
2.003 KB
-rwxr-xr-x
symtable.py
7.21 KB
-rw-r--r--
sysconfig.py
24.584 KB
-rw-r--r--
tabnanny.py
11.143 KB
-rwxr-xr-x
tarfile.py
86.781 KB
-rwxr-xr-x
telnetlib.py
26.708 KB
-rw-r--r--
tempfile.py
22.474 KB
-rw-r--r--
textwrap.py
16.102 KB
-rw-r--r--
this.py
0.979 KB
-rw-r--r--
threading.py
44.571 KB
-rw-r--r--
timeit.py
12.104 KB
-rwxr-xr-x
token.py
2.963 KB
-rw-r--r--
tokenize.py
24.293 KB
-rw-r--r--
trace.py
30.749 KB
-rwxr-xr-x
traceback.py
11.701 KB
-rw-r--r--
tty.py
0.858 KB
-rw-r--r--
types.py
3.093 KB
-rw-r--r--
uu.py
6.607 KB
-rwxr-xr-x
uuid.py
21.825 KB
-rw-r--r--
warnings.py
13.501 KB
-rw-r--r--
wave.py
18.144 KB
-rw-r--r--
weakref.py
11.226 KB
-rw-r--r--
webbrowser.py
22.376 KB
-rwxr-xr-x
xdrlib.py
5.255 KB
-rw-r--r--
zipfile.py
64.867 KB
-rw-r--r--