Shortcuts

Source code for mmengine.utils.package_utils

# Copyright (c) OpenMMLab. All rights reserved.
import importlib
import os.path as osp
import subprocess

import pkg_resources
from pkg_resources import get_distribution


[docs]def is_installed(package: str) -> bool: """Check package whether installed. Args: package (str): Name of package to be checked. """ # refresh the pkg_resources # more datails at https://github.com/pypa/setuptools/issues/373 importlib.reload(pkg_resources) try: get_distribution(package) return True except pkg_resources.DistributionNotFound: return False
[docs]def get_installed_path(package: str) -> str: """Get installed path of package. Args: package (str): Name of package. Example: >>> get_installed_path('mmcls') >>> '.../lib/python3.7/site-packages/mmcls' """ # if the package name is not the same as module name, module name should be # inferred. For example, mmcv-full is the package name, but mmcv is module # name. If we want to get the installed path of mmcv-full, we should concat # the pkg.location and module name pkg = get_distribution(package) possible_path = osp.join(pkg.location, package) if osp.exists(possible_path): return possible_path else: return osp.join(pkg.location, package2module(package))
def package2module(package: str): """Infer module name from package. Args: package (str): Package to infer module name. """ pkg = get_distribution(package) if pkg.has_metadata('top_level.txt'): module_name = pkg.get_metadata('top_level.txt').split('\n')[0] return module_name else: raise ValueError(f'can not infer the module name of {package}')
[docs]def call_command(cmd: list) -> None: try: subprocess.check_call(cmd) except Exception as e: raise e # type: ignore
[docs]def install_package(package: str): if not is_installed(package): call_command(['python', '-m', 'pip', 'install', package])

© Copyright 2022, mmengine contributors. Revision 6af88783.

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: v0.4.0
Versions
latest
stable
v0.5.0
v0.4.0
v0.3.0
v0.2.0
Downloads
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.