Elastic Beanstalk错误部署Python2.7环境而非3.7问题咨询
问题分析:EB配置Python3.7但SSH登录后默认是2.7
执行
eb init时选择了Python 3.7和AL 2环境,生成的配置文件如下:branch-defaults: default: environment: django-env group_suffix: null global: application_name: dashboard branch: null default_ec2_keyname: aws-eb default_platform: Python 3.7 running on 64bit Amazon Linux 2 default_region: us-west-2 include_git_submodules: true instance_profile: null platform_name: null platform_version: null profile: eb-cli repository: null sc: null workspace_type: Application按配置EC2实例应使用Python 3.7,但SSH登录后执行
python命令默认版本为2.7,请问问题出在哪里?
这是个很常见的小细节问题,我来帮你梳理下原因和解决思路:
核心原因:系统默认Python vs EB应用环境Python
Amazon Linux 2(AL2)本身的系统默认python命令就是指向2.7版本的——这是为了兼容系统底层的工具和依赖(很多系统级脚本还依赖Python 2.7运行)。而你通过EB配置的Python 3.7,是部署在应用运行的独立环境里的,并不会直接替换系统全局的默认Python。
具体细节拆解
- EB的Python环境路径:EB会把Python 3.7安装在特定路径(比如
/usr/bin/python3.7),并且在启动你的应用时,会通过环境变量把这个路径加入到应用的执行上下文里。但这个配置不会自动同步到你SSH登录后的默认Shell环境中。 - 应用实际运行的版本没问题:别担心,EB部署你的应用时,确实会使用配置里指定的Python 3.7。你可以通过查看应用日志(比如
/var/log/web.stdout.log)来验证,里面会明确显示应用启动时使用的Python版本。
如何在SSH会话中使用Python3.7
如果你希望在SSH登录后默认调用Python3.7,可以通过以下方式设置:
- 直接指定版本调用:最简单的方式是直接运行
python3.7或者python3(AL2里python3通常也指向3.7)。 - 设置Shell别名(可选):如果习惯用
python命令,可以修改你的Shell配置文件,添加别名:
注意:这种修改可能会影响部分依赖Python2.7的系统工具,所以如果遇到系统命令报错,建议取消别名,改用# 编辑bash配置文件 echo "alias python='python3.7'" >> ~/.bash_profile # 使配置生效 source ~/.bash_profilepython2或python3.7明确指定版本。
内容的提问来源于stack exchange,提问作者Filipe Aleixo
相关产品推荐
相关产品推荐

