我可以更新亚马逊旧版本的pip和setuptools吗?

时间:2015-02-06 15:33:37

标签: python amazon-web-services pip elastic-beanstalk setuptools

我可以更新或删除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和部署流程所期望或需要的?

2 个答案:

答案 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