Smart import function

import pkg_resources

import importlib

import subprocess

from pip._internal.operations.freeze import freeze

from pip._internal.exceptions import InstallationError

def installed(package):

    installed_packages = [pkg.key.lower() for pkg in pkg_resources.working_set]

    return package.lower() in installed_packages

def imported(package):



        print(f'Package {package} is already imported.\n')

        return True

    except ImportError:

        print(f'Package {package} is not imported yet.\n')

        return False

def can_install(package):

    try:['pip', 'install', '--dry-run', package], check=True)

        return True

    except InstallationError as e:

        print(f'Cannot install package {package}. Error: {e}\n')

        return False

def install(package):

    print(f'Package {package} is going to be installed.\n')

    try:['pip', 'install', package], check=True)

    except subprocess.CalledProcessError as e:

        print(f'Error installing package {package}. Error: {e}\n')

def resolve_package_name(package):

    new_name = input(f'There are some issues related to package name: {package}. Enter an alternate package name to try: ')

    return new_name

def want_to_retry():

    retry = input('Retry from the beginning? (y/n) ')

    return retry.lower() == 'y'

def smart_import(package):

    if not imported(package):

        if not installed(package):

            if not can_install(package):

                new_package = resolve_package_name(package)

                if want_to_retry():








# Example usage: