Calling Python from bash

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

This article summarizes a series of aspects related to invoking Python program from bash.

Running a Python Program with a Bash Wrapper

Check out these links for the meaning of standalone Python program and Python script.

Python Source Code and Tests Maintained within the Project Structure

.
├─ .gitignore # Optional
├─ src
├─ tests
├─ venv
├─ requirements.txt
└─ <wrapper-bash-script>

To maintain this subtree as part of a larger Python project whose .gitignore ignores virtual environment directories, add this to the subtree's .gitignore:

!venv

TODO: reconcile with Python Project Layout.

Only Externally Published Packages

TODO

.
├─ venv
├─ requirements.txt
└─ <wrapper-bash-script>

Using the Interpreter from the a Virtual Environment

TODO

If you want to use the interpreter from a specific virtual environment instead of the interpreter found in PATH, explicitly use the path to the binary from the virtual environment directory:

$(dirname $0)/venv/bin/python ...

Bash Wrapper that Bootstraps a Virtual Environment

function init_venv() {
  [[ -d $(dirname $)/venv ]] && return 0
  info "initializing venv ..."
  python3 --version 1>/dev/null 2>&1 || fail "python3 not in PATH"
  python3 -m venv "$(dirname $)/venv"
}

Also see:

Python Virtual Environment

Inline Python Code

Use bash here-doc:

  python3 <<EOF
print('blah')
EOF

Also see:

Python Script

Bash to Python Function Mapping

Bash to Python Function Mapping