home ~ socials ~ projects ~ rss

Install a Python pip Module from Inside a Script

October 2025
import subprocess
import sys

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

if __name__ == "__main__":
  install("keyring")
Output:
Collecting keyring
  Downloading keyring-25.6.0-py3-none-any.whl.metadata (20 kB)
Collecting jaraco.classes (from keyring)
  Downloading jaraco.classes-3.4.0-py3-none-any.whl.metadata (2.6 kB)
Collecting jaraco.functools (from keyring)
  Downloading jaraco_functools-4.3.0-py3-none-any.whl.metadata (2.9 kB)
Collecting jaraco.context (from keyring)
  Downloading jaraco.context-6.0.1-py3-none-any.whl.metadata (4.1 kB)
Collecting more-itertools (from jaraco.classes->keyring)
  Downloading more_itertools-10.8.0-py3-none-any.whl.metadata (39 kB)
Downloading keyring-25.6.0-py3-none-any.whl (39 kB)
Downloading jaraco.classes-3.4.0-py3-none-any.whl (6.8 kB)
Downloading jaraco.context-6.0.1-py3-none-any.whl (6.8 kB)
Downloading jaraco_functools-4.3.0-py3-none-any.whl (10 kB)
Downloading more_itertools-10.8.0-py3-none-any.whl (69 kB)
Installing collected packages: more-itertools, jaraco.context, jaraco.functools, jaraco.classes, keyring
Successfully installed jaraco.classes-3.4.0 jaraco.context-6.0.1 jaraco.functools-4.3.0 keyring-25.6.0 more-itertools-10.8.0


[notice] A new release of pip is available: 24.3.1 -> 25.3
[notice] To update, run: /Users/alan/workshop/grimoire_python_env/venv/bin/python3 -m pip install --upgrade pip
end of line

Endnotes

This is how I'm adding packages for my Grimoire so that I can use python modules in the inline code

References

Share link:
https://www.alanwsmith.com/en/33/zy/ik/oy/?install-a-python-pip-module-from-inside-a-script