Mac M1+PyCharm环境下Django导入错误排查求助
Django导入错误:ImportError: Couldn't import Django
此前运行正常的Django项目突然出现以下导入错误:
"ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?"
使用Mac M1设备与PyCharm专业版,已确认Django已安装、虚拟环境(venv)已激活,推测问题出在PYTHONPATH配置或Python版本冲突上。系统存在多个Python版本,相关命令输出如下:
(venv) user_name@computer_name project_name % which python python: aliased to /usr/bin/python3 (venv) user_name@computer_name project_name % which python3 /Users/user_name/PyCharmProjects/TrainingProjects/project_name/venv/bin/python3 (venv) user_name@computer_name project_name % which python3.9 /opt/homebrew/bin/python3.9
执行python3 -c "import sys; print(sys.path)"得到:
/opt/homebrew/Cellar/python@3.10/3.10.7/Frameworks/Python.framework/Versions/3.10/lib/python310.zip /opt/homebrew/Cellar/python@3.10/3.10.7/Frameworks/Python.framework/Versions/3.10/lib/python3.10 /opt/homebrew/Cellar/python@3.10/3.10.7/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload /Users/user_name/PyCharmProjects/TrainingProjects/project_name/venv/lib/python3.10/site-packages
settings.py中的相关代码:
import os import sys #not active from pathlib import Path BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
已尝试的操作:
- 执行
which $PYTHONPATH返回PYTHONPATH not found,echo $PYTHONPATH无输出 - 执行
export PYTHONPATH=$PYTHONPATH:/Library/Frameworks/Python.framework/Versions/3.9/bin/python3后问题仍未解决
解决方案
1. 重新创建匹配Python 3.9的虚拟环境
从命令输出看,当前激活的venv基于Python 3.10,但系统存在Python 3.9,若项目原本基于3.9开发,需重新创建对应版本的虚拟环境:
# 删除旧虚拟环境(可选) rm -rf venv # 用Python3.9创建新虚拟环境 python3.9 -m venv venv # 激活虚拟环境 source venv/bin/activate # 重新安装Django及依赖 pip install django
2. 修正PyCharm解释器配置
打开PyCharm:
- 进入
File > Settings > Project: [你的项目名] > Python Interpreter - 点击右上角齿轮图标,选择
Add - 选择
Existing environment,找到新创建的venv路径:/Users/user_name/PyCharmProjects/TrainingProjects/project_name/venv/bin/python3.9 - 确认后应用配置,重启PyCharm
3. 修正PYTHONPATH设置
之前添加的是Python二进制文件路径,这是错误的。PYTHONPATH应指向Python的site-packages目录或项目根目录。若需添加Python3.9的依赖路径:
# 先获取Python3.9的site-packages路径 python3.9 -c "import site; print(site.getsitepackages())" # 假设输出包含/opt/homebrew/lib/python3.9/site-packages,执行以下命令 export PYTHONPATH=$PYTHONPATH:/opt/homebrew/lib/python3.9/site-packages # 若要永久生效,可将上述命令添加到~/.zshrc文件末尾
4. 移除Python别名冲突
当前python被别名指向系统的/usr/bin/python3,激活虚拟环境后仍会干扰venv的Python调用:
# 激活venv后临时移除别名 unalias python # 若要永久解决,编辑~/.zshrc文件,删除或注释掉`alias python=/usr/bin/python3`这一行
内容的提问来源于stack exchange,提问作者kokserek
相关产品推荐
相关产品推荐

