Installing python module within code

Posted on

Solving problem is about exposing yourself to as many situations as possible like Installing python module within code and practice these strategies over and over. With time, it becomes second nature and a natural way you approach any problems in general. Big or small, always start with a plan, use other strategies mentioned here till you are confident and ready to code the solution.
In this post, my aim is to share an overview the topic about Installing python module within code, which can be followed any time. Take easy to follow this discuss.

Installing python module within code

I need to install a package from PyPi straight within my script.
Maybe there’s some module or distutils (distribute, pip etc.) feature which allows me to just execute something like pypi.install('requests') and requests will be installed into my virtualenv.

Asked By: chuwy

||

Answer #1:

The officially recommended way to install packages from a script is by calling pip’s command-line interface via a subprocess. Most other answers presented here are not supported by pip. Furthermore since pip v10, all code has been moved to pip._internal precisely in order to make it clear to users that programmatic use of pip is not allowed.

Use sys.executable to ensure that you will call the same pip associated with the current runtime.

import subprocess
import sys
def install(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", package])
Answered By: chuwy

Answer #2:

You can also use something like:

import pip
def install(package):
    if hasattr(pip, 'main'):
        pip.main(['install', package])
    else:
        pip._internal.main(['install', package])
# Example
if __name__ == '__main__':
    install('argh')
Answered By: Aaron de Windt

Answer #3:

If you want to use pip to install required package and import it after installation, you can use this code:

def install_and_import(package):
    import importlib
    try:
        importlib.import_module(package)
    except ImportError:
        import pip
        pip.main(['install', package])
    finally:
        globals()[package] = importlib.import_module(package)
install_and_import('transliterate')

If you installed a package as a user you can encounter the problem that you cannot just import the package. See How to refresh sys.path? for additional information.

Answered By: Rikard Anglerud

Answer #4:

This should work:

import subprocess
def install(name):
    subprocess.call(['pip', 'install', name])
Answered By: rominf

Answer #5:

i added some exception handling to @Aaron’s answer.

import subprocess
import sys
try:
    import pandas as pd
except ImportError:
    subprocess.check_call([sys.executable, "-m", "pip", "install", 'pandas'])
finally:
    import pandas as pd
Answered By: quantum

Answer #6:

You define the dependent module inside the setup.py of your own package with the “install_requires” option.

If your package needs to have some console script generated then you can use the “console_scripts” entry point in order to generate a wrapper script that will be placed
within the ‘bin’ folder (e.g. of your virtualenv environment).

Answered By: Sohan Das

Answer #7:

for installing multiple packages, i am using a setup.py file with following code:

import sys
import subprocess
import pkg_resources
required = {'numpy','pandas','<etc>'}
installed = {pkg.key for pkg in pkg_resources.working_set}
missing = required - installed
if missing:
    # implement pip as a subprocess:
    subprocess.check_call([sys.executable, '-m', 'pip', 'install',*missing])
Answered By: Andreas Jung

Answer #8:

import os
os.system('pip install requests')

I tried above for temporary solution instead of changing docker file. Hope these might be useful to some

Answered By: Tanmay Shrivastava

Leave a Reply

Your email address will not be published.