docker setup
This commit is contained in:
80
srcs/.venv/lib/python3.11/site-packages/install/__init__.py
Normal file
80
srcs/.venv/lib/python3.11/site-packages/install/__init__.py
Normal file
@ -0,0 +1,80 @@
|
||||
#!/usr/bin/python
|
||||
__version__ = "1.3.5"
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
import tempfile
|
||||
import importlib
|
||||
|
||||
if sys.version[0] == '3':
|
||||
import urllib.request as url
|
||||
from shlex import quote
|
||||
else:
|
||||
import urllib as url
|
||||
from pipes import quote
|
||||
|
||||
def _get_pip():
|
||||
fd, path = tempfile.mkstemp('_get-pip.py')
|
||||
url.urlretrieve("https://bootstrap.pypa.io/get-pip.py", path)
|
||||
subprocess.check_call([sys.executable, path])
|
||||
|
||||
def _check_pip():
|
||||
try:
|
||||
with open(os.devnull, 'w') as DEVNULL:
|
||||
subprocess.check_call([sys.executable, '-m', 'pip'], stdout=DEVNULL)
|
||||
return True
|
||||
except subprocess.CalledProcessError as exc:
|
||||
return False
|
||||
|
||||
def install(pkg, use_pep517=None, requirements=None, pip_options=None, install_options=None):
|
||||
"""Install packages dynamically in your code
|
||||
|
||||
Args:
|
||||
pkg: Name of the package or requirements.txt file as a string, you can also use version specifiers like requests==1.2.3
|
||||
use_pep517: Optional boolean to force --use-pep517/--no-use-pep517
|
||||
requirements: Optional boolean if a requirements.txt was specified
|
||||
pip_options: Optional arbitary list of global options to pass to pip
|
||||
install_options: Optional arbitary list of install options to pass to pip install
|
||||
"""
|
||||
# exit fast if pkg already installed
|
||||
try:
|
||||
importlib.import_module(pkg)
|
||||
return
|
||||
except ModuleNotFoundError:
|
||||
pass
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if not _check_pip(): _get_pip()
|
||||
|
||||
cmd = [sys.executable, '-m', 'pip']
|
||||
|
||||
if pip_options:
|
||||
if isinstance(pip_options, list):
|
||||
options = [quote(option) for option in pip_options]
|
||||
cmd.extend(options)
|
||||
else:
|
||||
raise TypeError('pip_options passed to install must be a list')
|
||||
|
||||
cmd.append('install')
|
||||
|
||||
if install_options:
|
||||
if isinstance(install_options, list):
|
||||
options = [quote(option) for option in install_options]
|
||||
cmd.extend(options)
|
||||
else:
|
||||
raise TypeError('install_options passed to install must be a list')
|
||||
|
||||
if use_pep517 is True:
|
||||
cmd.append('--use-pep517')
|
||||
elif use_pep517 is False:
|
||||
cmd.append('--no-use-pep517')
|
||||
|
||||
if requirements:
|
||||
cmd.append('-r')
|
||||
|
||||
pkg = quote(pkg)
|
||||
cmd.append(pkg)
|
||||
|
||||
subprocess.check_call(cmd)
|
Reference in New Issue
Block a user