[Test] Workaround for importlib crazy behavior
- I can't call pip to install in a specified dir and then import using importlib. It always fail, even when the module is installed and its path is in sys.path. Couldn't find why.
This commit is contained in:
parent
d6aa9b2446
commit
120220b986
|
|
@ -235,10 +235,12 @@ def check_pip():
|
|||
|
||||
|
||||
def pip_install(pip_command, dest=None, name='.'):
|
||||
cmd = [pip_command, 'install', '-U', '--no-warn-script-location',
|
||||
# This is what -U (--user) means, but Debian's pip installs to /usr/local when used by root
|
||||
'--root', os.path.dirname(site.USER_BASE), '--prefix', os.path.basename(site.USER_BASE),
|
||||
name]
|
||||
cmd = [pip_command, 'install', '-U', '--no-warn-script-location']
|
||||
if name == '.':
|
||||
# Applied only when installing a downloaded tarball
|
||||
# This is what -U (--user) means, but Debian's pip installs to /usr/local when used by root
|
||||
cmd.extend(['--root', os.path.dirname(site.USER_BASE), '--prefix', os.path.basename(site.USER_BASE)])
|
||||
cmd.append(name)
|
||||
logger.debug('- Running: {}'.format(cmd))
|
||||
try:
|
||||
res_run = subprocess.run(cmd, check=True, capture_output=True, cwd=dest)
|
||||
|
|
@ -708,9 +710,10 @@ def check_tool_python(dep, reload=False):
|
|||
return None
|
||||
# Check we can use it
|
||||
try:
|
||||
importlib.invalidate_caches()
|
||||
mod = importlib.import_module(dep.module_name)
|
||||
res = check_tool_python_version(mod, dep)
|
||||
if res is not None and reload is not None:
|
||||
if res is not None and reload:
|
||||
res = importlib.reload(reload)
|
||||
return res
|
||||
except ModuleNotFoundError:
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ def try_dependency(ctx, caplog, monkeypatch, docstring, name_dep, downloader_nam
|
|||
|
||||
|
||||
def try_dependency_module(ctx, caplog, monkeypatch, docstring, name_dep, downloader_name):
|
||||
# Note: every attempt to install in a chosen dir failed, even when the module was there and in the sys.path the
|
||||
# importlib call miserably failed.
|
||||
with monkeypatch.context():
|
||||
# Refresh the module with actual dependencies
|
||||
mod = importlib.reload(downloader)
|
||||
|
|
@ -60,7 +62,7 @@ def try_dependency_module(ctx, caplog, monkeypatch, docstring, name_dep, downloa
|
|||
cov.start()
|
||||
# Python module
|
||||
downloader_func = getattr(mod, downloader_name)
|
||||
res = downloader_func(dep, False)
|
||||
res = downloader_func(dep)
|
||||
cov.stop()
|
||||
cov.save()
|
||||
# We should get the following name:
|
||||
|
|
|
|||
Loading…
Reference in New Issue