在PythonAnywhere部署代码时遇ImportError:找不到mysite.settings模块
ImportError: No module named mysite.settings on PythonAnywhere Let's break down what's going wrong here and fix it step by step.
First, let's recap your setup: your project lives at /home/charles125/mysite/mysite (the inner mysite folder holds your settings.py), and you're using PythonAnywhere's default WSGI config—but there are a few common issues that could be triggering this import error.
1. Fix the Syntax Error in Your WSGI File
Looking at the code you shared, the first line has a critical mistake:
import os import sys
This is invalid Python syntax—you can't cram two import statements onto a single line. Split them into separate lines:
import os import sys
A syntax error here would prevent the WSGI script from loading properly, which often manifests as an indirect import error for your settings module.
2. Add __init__.py to Your Inner mysite Directory
Python requires a file named __init__.py (even an empty one) in a directory to recognize it as an importable package. If your cloned Git repo didn't include this file, that's almost certainly part of the problem.
Create it via PythonAnywhere's bash console:
touch /home/charles125/mysite/mysite/__init__.py
3. Verify Your Path Configuration
Your WSGI script adds ~/mysite to sys.path, which is correct (that's the root of your project, where your manage.py should live). But let's double-check the path is being added properly.
Add temporary debug logging to your WSGI file (remember to remove this after debugging):
import os import sys path = os.path.expanduser('~/mysite') # Debug logs will appear in PythonAnywhere's error log (under the Web tab) print(f"Adding path to sys.path: {path}", file=sys.stderr) print(f"Current sys.path: {sys.path}", file=sys.stderr) if path not in sys.path: sys.path.append(path) os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' from django.core.wsgi import get_wsgi_application from django.contrib.staticfiles.handlers import StaticFilesHandler application = StaticFilesHandler(get_wsgi_application())
Check the error log to confirm /home/charles125/mysite is listed in sys.path.
4. Test the Import Manually
To rule out other issues, test importing your settings directly in the PythonAnywhere bash console:
cd /home/charles125/mysite python
Then in the Python shell:
import sys sys.path.insert(0, '/home/charles125/mysite') import os os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' import mysite.settings
If this throws an error, read the message closely—it'll tell you exactly what's wrong (e.g., missing file, permission issue, or mismatched Python version).
5. Check Python Version Consistency
Make sure the Python version selected in your PythonAnywhere WSGI config matches the version you used to develop your project. For example, if you built your site with Python 3.10, don't run the WSGI script on Python 3.8—this can cause import errors if packages are installed for the wrong version.
Final Step
After making these changes, reload your web app from the PythonAnywhere "Web" tab. If everything is set up correctly, the import error should be resolved.
内容的提问来源于stack exchange,提问作者Amon

