升级Ubuntu 22.04 LTS后虚拟环境失效,Django导入错误求助
问题描述
升级Ubuntu 22.04 LTS前虚拟环境运行正常,升级后彻底用不了,一直弹出这个错误:
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?
试了之前常用的workon myenvironment和source myenvironment/bin/activate激活环境,完全没用;删了重新建环境,问题还是一样。已经确认Django装了,但PYTHONPATH环境变量没检查过,也不知道怎么改和配置。想知道怎么修复,还有升级Ubuntu 22.04 LTS后要做哪些特殊操作才能让虚拟环境正常跑。
修复步骤
1. 核对虚拟环境绑定的Python版本
Ubuntu 22.04默认把Python从20.04的3.8升到了3.10,旧虚拟环境大概率绑的是旧版本Python,这是核心问题:
- 先激活环境,执行
which python和python --version,看看是不是系统现在的3.10版本。 - 如果版本不对,删了旧环境重新建,指定用Python3.10:
用virtualenv的话这么写:# 用virtualenvwrapper的话,先删旧环境 rmvirtualenv myenvironment # 指定3.10创建新环境 mkvirtualenv -p /usr/bin/python3.10 myenvironmentvirtualenv -p /usr/bin/python3.10 myenvironment
2. 检查并配置PYTHONPATH
激活环境后,PYTHONPATH应该自动包含虚拟环境的site-packages目录,要是没包含就手动加:
- 先看当前PYTHONPATH:
echo $PYTHONPATH - 没看到虚拟环境的site-packages路径的话,手动导出:
嫌每次手动输麻烦,就把这条命令加到虚拟环境的# 把路径换成你自己的虚拟环境路径,比如下面这个示例 export PYTHONPATH="/home/你的用户名/.virtualenvs/myenvironment/lib/python3.10/site-packages:$PYTHONPATH"bin/activate文件末尾,以后激活环境会自动配置。
3. 重新装一遍依赖包
就算之前确认Django装了,系统升级后依赖可能有兼容性问题,重新装一遍准没错:
- 激活环境后先更pip:
pip install --upgrade pip - 然后装Django或者按requirements文件装:
pip install django # 有requirements.txt的话直接跑这个 pip install -r requirements.txt
4. 更新virtualenvwrapper(如果在用)
Ubuntu 22.04可能需要新版本的virtualenvwrapper才能适配:
- 执行
pip install --upgrade virtualenvwrapper更新 - 检查
~/.bashrc或者~/.zshrc里的配置,确保Python路径指向3.10:
改完后执行export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.10 source /usr/local/bin/virtualenvwrapper.shsource ~/.bashrc(用zsh就跑source ~/.zshrc)让配置生效。
Ubuntu 22.04 LTS升级后虚拟环境维护注意事项
- 盯紧Python版本:系统默认是3.10,新创建的虚拟环境一定要指定这个版本,避免版本不兼容。
- 更新环境工具:把virtualenv、virtualenvwrapper更到最新版,适配新系统的Python。
- 重新装依赖:系统升级后旧依赖可能编译出错或不兼容,建议把项目所有依赖重新装一遍。
- 检查环境变量:确保虚拟环境激活脚本里的Python路径、PYTHONPATH这些配置,都指向当前系统的Python版本和虚拟环境目录。
内容的提问来源于stack exchange,提问作者David H
相关产品推荐
相关产品推荐

