Keywords: Mac OS X | MySQLdb | mysql_config | Python | Django | environment variables
Abstract: This article provides an in-depth analysis of the mysql_config not found error encountered during MySQLdb installation on Mac OS X systems. It explores the root causes of environment variable misconfigurations and presents multiple solutions including using mysql-connector-python as an alternative, manually locating mysql_config files, installing MySQL via MacPorts, and managing development dependencies. The guide offers a systematic troubleshooting approach to resolve this common Python database connectivity issue.
When developing Python applications on Mac OS X, particularly those using Django framework with MySQL databases, developers frequently encounter a frustrating error: EnvironmentError: mysql_config not found. This error typically occurs during the installation of MySQLdb (MySQL-Python) package, preventing Django projects from starting properly and throwing ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb exceptions. This article provides a comprehensive analysis of this issue and presents a complete set of solutions.
Root Cause Analysis
When executing sudo pip install MySQL-python, the installation process attempts to call the mysql_config utility to obtain MySQL client configuration information. This tool is typically located in the bin subdirectory of the MySQL installation directory. If the system cannot locate this executable file, it throws the EnvironmentError: mysql_config not found error.
Common causes include:
- MySQL not properly installed or its path not included in the system PATH environment variable
- MySQL installed via Homebrew may use different path structures
- Multiple MySQL installations causing path conflicts
- Missing necessary development dependency packages
Basic Solution: Environment Variable Configuration
First, try the most fundamental solution—properly configuring environment variables. If MySQL was installed via Homebrew, execute the following command:
export PATH=$PATH:/usr/local/mysql/bin
Then verify if mysql_config is accessible:
which mysql_config
If the command returns a path, the configuration is successful. If still not found, use the locate mysql_config command to search for all relevant files on the system.
Alternative Solution: Using mysql-connector-python
If the above method fails, consider using MySQL's official alternative connector. mysql-connector-python is MySQL's officially maintained Python connector that doesn't require the mysql_config utility, making installation simpler:
pip install mysql-connector-python
In Django's settings.py, configure the database engine as:
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
# other configuration parameters
}
}
Advanced Solution: Manual Location and Configuration
When environment variable methods fail, try manually locating the mysql_config file and referencing it directly. First find the complete file path:
find /usr -name mysql_config 2>/dev/null
Or use a more precise search:
sudo find / -name mysql_config 2>/dev/null | grep -v "Permission denied"
After finding the path, you can specify it directly during MySQLdb installation:
sudo PATH=$PATH:/path/to/mysql/bin pip install MySQL-python
Installing MySQL via MacPorts
If MySQL is installed via MacPorts, the situation differs. MacPorts typically names mysql_config as mysql_config5 (for MySQL 5.x versions). After installation, configure the appropriate path:
export PATH=$PATH:/opt/local/lib/mysql5/bin
Then attempt to install MySQLdb:
sudo pip install MySQL-python
Installing Necessary Development Dependencies
In some cases, missing development dependency packages can also cause installation failures. While Mac OS X doesn't have direct python-dev and libmysqlclient-dev packages, necessary development tools can be installed via:
xcode-select --install
After installing Xcode command line tools, try installing MySQLdb again. If using Homebrew, you can also install mysql-client:
brew install mysql-client
System Permissions and Installation Order
Ensure installation steps are executed in the correct order:
- Install Python (system default or via Homebrew)
- Install MySQL (via Homebrew, MacPorts, or official installer)
- Configure environment variables, adding MySQL's bin directory to PATH
- Install MySQLdb or alternative connector
If encountering permission issues, try using virtual environments or prefix commands with sudo. However, virtual environments are recommended to avoid system-level package conflicts.
Troubleshooting Process Summary
When encountering the mysql_config not found error, follow this troubleshooting process:
- Verify MySQL is correctly installed and running
- Check if
mysql_configexists in the system PATH - Try manually adding MySQL bin directory to PATH
- Consider using mysql-connector-python as an alternative
- Check for multiple MySQL installations causing conflicts
- Ensure necessary development tools and dependencies are installed
- Try reinstalling MySQL via MacPorts
- Test installation in a virtual environment
Through systematic troubleshooting, appropriate solutions can usually be found. Each method has its applicable scenarios, and developers should choose the most suitable approach based on their specific environment and requirements.