我可以更新或删除AWS Elastic Beanstalk提供的pip和setuptools吗?
我的AWS Elastic Beanstalk Python环境提供的pip和setuptools版本(在运行我的应用程序的2.7虚拟环境中,ami-d14608e1
;在/opt/python/run/venv/lib/python2.7/site-packages
中)非常陈旧:由
pip list --outdated
他们是
setuptools (Current: 2.2 Latest: 12.0.5)
pip (Current: 1.5.4 Latest: 6.0.7)
我可以更新这些内容(例如,将其列在我的requirements.txt
中),还是这些特定版本是EB的Python和部署流程所期望或需要的?
答案 0 :(得分:17)
以pip
为例,默认AWS环境通常提供旧版本。目前在我使用的计算机上是6.1.1
,而pip
在每个9.0.1
可用的通话中都会重复。
依赖关系有时需要最新版本的pip
。让它可用的一种方法是依赖pip
本身,因为AWS提供的yum
来源升级较慢(由于产生的绝对影响......)。
不同的AWS服务有不同的解决方案。问题是关于Beanstalk。假设基于AWS提供的eb
进行部署,则可以在目标容器中执行命令:
.ebextensions/upgrade_pip.config
文件。要升级pip
,这样的命令可以完成工作:
commands:
pip_upgrade:
command: /opt/python/run/venv/bin/pip install --upgrade pip
ignoreErrors: false
请注意.ebextensions/upgrade_pip.config
的文件名定义了执行顺序。如果它需要比.ebextensions
中的任何其他脚本更早运行,则需要使用01_upgrade...
之类的前缀。
答案 1 :(得分:1)
尝试添加ebextension文件,该文件将在运行前升级pip
pip install -r requirements.txt
例如:
004_prehook.config
files:
"/opt/elasticbeanstalk/hooks/appdeploy/pre/02a_upgrade_pip.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
source /opt/python/run/venv/bin/activate
python3 -m pip install --upgrade pip