Ansible troubleshooting - Error markupsafe
How to Solve the "ERROR: No module named markupsafe" Issue after Upgrading Python 3.12 on Mac with Homebrew


Introduction
After upgrading Python to version 3.12 on your Mac using Homebrew, you encountered an error when trying to run Ansible: “ERROR: No module named 'markupsafe'
”. This issue arises because Ansible relies on certain Python modules, and in this case, it seems that the ‘markupsafe
’ module is missing or not properly installed.
Let’s go through the steps to resolve this issue:
ERROR: No module named 'markupsafe'
DL;DR
$ ansible
ERROR: No module named 'markupsafe'
$ brew uninstall ansible-lint ansible python-markupsafe
$ brew install ansible-lint ansible python-markupsafe
$ ansible --version
ansible [core 2.15.6]
config file = None
configured module search path = ['/Users/lberton/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /opt/homebrew/Cellar/ansible/8.6.1/libexec/lib/python3.12/site-packages/ansible
ansible collection location = /Users/lberton/.ansible/collections:/usr/share/ansible/collections
executable location = /opt/homebrew/bin/ansible
python version = 3.12.0 (main, Oct 2 2023, 12:03:24) [Clang 15.0.0 (clang-1500.0.40.1)] (/opt/homebrew/Cellar/ansible/8.6.1/libexec/bin/python)
jinja version = 3.1.2
libyaml = True
Step 1: Identify the Problem
The error message indicates that the ‘markupsafe’ module is not found. This module is a dependency for Ansible and needs to be installed.
Step 2: Check for ‘markupsafe’ Installation
First, let’s check if the ‘markupsafe’ module is installed. Open your terminal and run:
python3.12 -m pip show markupsafe
If the module is not installed, you will need to install it. If it’s already installed, proceed to the next step.
The Best Resources For Ansible
Certifications
Video Course
Printed Book
eBooks
Ansible by Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps
Ansible Cookbook: A Comprehensive Guide to Unleashing the Power of Ansible via Best Practices, Troubleshooting, and Linting Rules with Luca Berton
Ansible For Windows By Examples: 50+ Automation Examples For Windows System Administrator And DevOps
Ansible For Linux by Examples: 100+ Automation Examples For Linux System Administrator and DevOps
Ansible Linux Filesystem By Examples: 40+ Automation Examples on Linux File and Directory Operation for Modern IT Infrastructure
Ansible For Security by Examples: 100+ Automation Examples to Automate Security and Verify Compliance for IT Modern Infrastructure
Ansible Tips and Tricks: 10+ Ansible Examples to Save Time and Automate More Tasks
Ansible Linux Users & Groups By Examples: 20+ Automation Examples on Linux Users and Groups Operation for Modern IT Infrastructure
Ansible For PostgreSQL by Examples: 10+ Examples To Automate Your PostgreSQL database
Ansible For Amazon Web Services AWS By Examples: 10+ Examples To Automate Your AWS Modern Infrastructure
Ansible Automation Platform By Example: A step-by-step guide for the most common user scenarios
Step 3: Install ‘markupsafe’
Install the ‘markupsafe’ module using the following command:
brew uninstall ansible ansible-lint python-markupsafe
brew install python-markupsafe
This command uses Homebrew package manager, brew
, to install the ‘markupsafe
’ module. Otherwise you can use:
python3.12 -m pip install markupsafe
This command uses Python’s package manager, pip
, to install the ‘markupsafe
’ module.
Step 4: Verify ‘markupsafe’ Installation
After installing ‘markupsafe’, verify that the installation was successful:
python3.12 -c "import markupsafe"
If there are no errors, the ‘markupsafe
’ module is now installed correctly.
Step 5: Reinstall Ansible and Ansible-Lint
Now that ‘markupsafe
’ is installed, you can proceed to reinstall Ansible and Ansible-Lint to ensure they are using the correct dependencies:
brew uninstall ansible ansible-lint
brew install ansible ansible-lint
This will uninstall the current versions and install them again with the correct dependencies, including ‘markupsafe’.
Step 6: Verify Ansible Installation
Finally, check if Ansible is working without any errors:
ansible --version
This should display the version information for Ansible without any ‘markupsafe’ related errors.
ansible [core 2.15.6]
config file = None
configured module search path = ['/Users/lberton/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /opt/homebrew/Cellar/ansible/8.6.1/libexec/lib/python3.12/site-packages/ansible
ansible collection location = /Users/lberton/.ansible/collections:/usr/share/ansible/collections
executable location = /opt/homebrew/bin/ansible
python version = 3.12.0 (main, Oct 2 2023, 12:03:24) [Clang 15.0.0 (clang-1500.0.40.1)] (/opt/homebrew/Cellar/ansible/8.6.1/libexec/bin/python)
jinja version = 3.1.2
libyaml = True
Conclusion
By following these steps, you should have resolved the “ERROR: No module named 'markupsafe'
” issue after upgrading Python 3.12 on your Mac with Homebrew. Always make sure to check for any missing dependencies when encountering module-related errors and reinstall them as needed.
Academy
Learn the Ansible automation technology with some real-life examples in my
My book Ansible By Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps
Donate
Want to keep this project going? Please donate