__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
"""distutils.spawn
Provides the 'spawn()' function, a front-end to various platform-
specific functions for launching another program in a sub-process.
Also provides the 'find_executable()' to search the path for a given
executable name.
"""
import sys
import os
import subprocess
from .errors import DistutilsExecError
from .debug import DEBUG
from ._log import log
def spawn(cmd, search_path=1, verbose=0, dry_run=0, env=None): # noqa: C901
"""Run another program, specified as a command list 'cmd', in a new process.
'cmd' is just the argument list for the new process, ie.
cmd[0] is the program to run and cmd[1:] are the rest of its arguments.
There is no way to run a program with a name different from that of its
executable.
If 'search_path' is true (the default), the system's executable
search path will be used to find the program; otherwise, cmd[0]
must be the exact path to the executable. If 'dry_run' is true,
the command will not actually be run.
Raise DistutilsExecError if running the program fails in any way; just
return on success.
"""
# cmd is documented as a list, but just in case some code passes a tuple
# in, protect our %-formatting code against horrible death
cmd = list(cmd)
log.info(subprocess.list2cmdline(cmd))
if dry_run:
return
if search_path:
executable = find_executable(cmd[0])
if executable is not None:
cmd[0] = executable
env = env if env is not None else dict(os.environ)
if sys.platform == 'darwin':
from distutils.util import MACOSX_VERSION_VAR, get_macosx_target_ver
macosx_target_ver = get_macosx_target_ver()
if macosx_target_ver:
env[MACOSX_VERSION_VAR] = macosx_target_ver
try:
proc = subprocess.Popen(cmd, env=env)
proc.wait()
exitcode = proc.returncode
except OSError as exc:
if not DEBUG:
cmd = cmd[0]
raise DistutilsExecError(
"command {!r} failed: {}".format(cmd, exc.args[-1])
) from exc
if exitcode:
if not DEBUG:
cmd = cmd[0]
raise DistutilsExecError(
"command {!r} failed with exit code {}".format(cmd, exitcode)
)
def find_executable(executable, path=None):
"""Tries to find 'executable' in the directories listed in 'path'.
A string listing directories separated by 'os.pathsep'; defaults to
os.environ['PATH']. Returns the complete filename or None if not found.
"""
_, ext = os.path.splitext(executable)
if (sys.platform == 'win32') and (ext != '.exe'):
executable = executable + '.exe'
if os.path.isfile(executable):
return executable
if path is None:
path = os.environ.get('PATH', None)
if path is None:
try:
path = os.confstr("CS_PATH")
except (AttributeError, ValueError):
# os.confstr() or CS_PATH is not available
path = os.defpath
# bpo-35755: Don't use os.defpath if the PATH environment variable is
# set to an empty string
# PATH='' doesn't match, whereas PATH=':' looks in the current directory
if not path:
return None
paths = path.split(os.pathsep)
for p in paths:
f = os.path.join(p, executable)
if os.path.isfile(f):
# the file exists, we have a shot at spawn working
return f
return None
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| command | Folder | 0755 |
|
|
| __init__.py | File | 359 B | 0644 |
|
| _collections.py | File | 5.18 KB | 0644 |
|
| _functools.py | File | 411 B | 0644 |
|
| _log.py | File | 43 B | 0644 |
|
| _macos_compat.py | File | 239 B | 0644 |
|
| _msvccompiler.py | File | 19.16 KB | 0644 |
|
| archive_util.py | File | 8.37 KB | 0644 |
|
| bcppcompiler.py | File | 14.38 KB | 0644 |
|
| ccompiler.py | File | 47.5 KB | 0644 |
|
| cmd.py | File | 17.44 KB | 0644 |
|
| config.py | File | 4.8 KB | 0644 |
|
| core.py | File | 9.18 KB | 0644 |
|
| cygwinccompiler.py | File | 11.64 KB | 0644 |
|
| debug.py | File | 139 B | 0644 |
|
| dep_util.py | File | 3.33 KB | 0644 |
|
| dir_util.py | File | 7.88 KB | 0644 |
|
| dist.py | File | 49 KB | 0644 |
|
| errors.py | File | 3.5 KB | 0644 |
|
| extension.py | File | 10.03 KB | 0644 |
|
| fancy_getopt.py | File | 17.48 KB | 0644 |
|
| file_util.py | File | 8.02 KB | 0644 |
|
| filelist.py | File | 13.39 KB | 0644 |
|
| log.py | File | 1.17 KB | 0644 |
|
| msvc9compiler.py | File | 29.48 KB | 0644 |
|
| msvccompiler.py | File | 23.02 KB | 0644 |
|
| py38compat.py | File | 217 B | 0644 |
|
| py39compat.py | File | 639 B | 0644 |
|
| spawn.py | File | 3.41 KB | 0644 |
|
| sysconfig.py | File | 18.48 KB | 0644 |
|
| text_file.py | File | 11.8 KB | 0644 |
|
| unixccompiler.py | File | 15.24 KB | 0644 |
|
| util.py | File | 17.67 KB | 0644 |
|
| version.py | File | 12.65 KB | 0644 |
|
| versionpredicate.py | File | 5.08 KB | 0644 |
|