如何修复Ubuntu 20.04下的PYTHONPATH问题及Python命令异常?
嘿,看你这情况确实够头疼的——升级系统断电搞崩了环境,还因为折腾Python把情况弄得更糟,我来帮你一步步捋顺这些问题:
1. 先搞定python命令找不到的问题
Ubuntu 20.04默认就没有python这个通用命令的软链接,系统只认python3和python2。你可以手动给它建一个指向python3的链接(毕竟20.04默认Python版本就是3.8,推荐用这个):
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
跑完这条命令再输python --version,应该就能看到Python 3.8.2的输出了。要是之后你偶尔需要切换到Python 2,也可以用同样的命令添加选项:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2
然后通过update-alternatives --config python就能选择默认用哪个版本了。
2. 清理混乱的PYTHONPATH
先看看当前的PYTHONPATH到底乱成啥样:
echo $PYTHONPATH
要是输出的路径一堆乱码或者无关路径,先临时清空它试试:
unset PYTHONPATH
这时候再去运行你的Django应用,如果能启动,说明之前的PYTHONPATH配置就是罪魁祸首。接下来你得去排查哪些文件里偷偷设置了PYTHONPATH——常见的地方有~/.bashrc、~/.profile、~/.bash_profile,甚至系统级的/etc/profile。
找到设置PYTHONPATH的行,要么给它加个#注释掉,要么直接删掉,然后重新加载bash配置:
source ~/.bashrc
之后如果你的Django项目确实需要特定的路径,别在全局环境里瞎改,要么在项目启动脚本里临时设置,要么用虚拟环境来管理(强烈推荐后者,能彻底隔离全局环境的干扰)。
3. 让Django应用正常跑起来
最稳妥的办法是给你的Django项目建一个独立的虚拟环境,这样所有依赖都和全局环境分开,再也不会互相干扰:
# 先装虚拟环境工具 sudo apt install python3-venv # 进到你的项目目录里 cd /path/to/your/django-project # 创建虚拟环境 python3 -m venv venv # 激活虚拟环境(激活后命令行前面会多个(venv)标识) source venv/bin/activate # 重新安装项目需要的所有依赖 pip install -r requirements.txt # 现在试试启动Django python manage.py runserver
用虚拟环境的话,就不用再纠结全局PYTHONPATH的问题了,所有包都乖乖待在这个独立环境里。
4. 清理~/.bashrc里的重复配置
你的.bashrc里有三段一模一样的Ruby Gems配置,留一段就行,删掉重复的,改成这样:
# Install Ruby Gems to ~/gems export GEM_HOME="$HOME/gems" export PATH="$HOME/gems/bin:$PATH"
改完记得执行source ~/.bashrc让新配置生效。
按照上面的步骤一步步来,应该能把你的Python环境和Django应用都拉回正轨。要是中间遇到具体的错误提示,把内容贴出来,咱们再针对性解决。
内容的提问来源于stack exchange,提问作者Parth Pandya

