MacOS运行Python脚本遇ImportError: No Module Named bs4问题求助
Hey there, this is a super common issue caused by Python environment mismatch—let's break down what's happening and fix it step by step.
First, let's recap your situation to make sure we're on the same page:
- When running
Test.py, you hit this error:
Traceback (most recent call last): File "Test.py", line 2, in <module> from bs4 import BeautifulSoup
- But running
pip3 install bs4orpip3 install BeautifulSoup4confirms the packages are already installed in/usr/local/lib/python3.7/site-packages:
MyMac:Test user$ pip3 install bs4 Requirement already satisfied: bs4 in /usr/local/lib/python3.7/site-packages (0.0.1) Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.7/site-packages (from bs4) (4.8.1) Requirement already satisfied: soupsieve>=1.2 in /usr/local/lib/python3.7/site-packages (from beautifulsoup4->bs4) (1.9.4) MyMac:Test user$ pip3 install BeautifulSoup4 Requirement already satisfied: BeautifulSoup4 in /usr/local/lib/python3.7/site-packages (4.8.1) Requirement already satisfied: soupsieve>=1.2 in /usr/local/lib/python3.7/site-packages (from BeautifulSoup4) (1.9.4)
Why This Happens
Chances are, the Python interpreter you're using to run Test.py is not the same one pip3 installed bs4 for. For example:
- You might be running the script with your system's default
python(often Python 2.x), but pip3 is set up for Python 3.7. - Or you have multiple Python 3 versions installed, and the script is using a different one than your pip3 targets.
Step-by-Step Fixes
1. Run the script with Python 3 explicitly
Instead of just python Test.py, use python3 to match the environment where your bs4 package lives:
python3 Test.py
This should immediately resolve the import error if environment mismatch was the root cause.
2. Update your script's shebang line (permanent fix)
If you want to run the script directly without typing python3 every time, add or modify the first line of Test.py to specify Python 3:
#!/usr/bin/env python3 from bs4 import BeautifulSoup # Rest of your script code
Then make the script executable (for macOS/Linux):
chmod +x Test.py
Now you can run it with ./Test.py and it'll automatically use Python 3.
3. Verify your Python environments
To double-check which versions you're working with, run these terminal commands:
- Check the version of the default
pythoninterpreter:python --version - Check the version tied to
pip3:python3 --version - You can also confirm where each Python looks for packages:
# For default python python -c "import sys; print('\n'.join(sys.path))" # For python3 python3 -c "import sys; print('\n'.join(sys.path))"
Look for /usr/local/lib/python3.7/site-packages in the output—if it only appears in the python3 result, that confirms the environment mismatch.
4. If using a virtual environment
If you set up a virtual environment for your project, make sure you activate it before running the script or installing packages:
source your_venv_name/bin/activate # Then run your script python Test.py
This ensures you're using the isolated environment where bs4 is installed.
内容的提问来源于stack exchange,提问作者Claus

