Python 在AWS Beanstalk上安装要求之前升级pip

Python 在AWS Beanstalk上安装要求之前升级pip,python,amazon-web-services,flask,amazon-elastic-beanstalk,Python,Amazon Web Services,Flask,Amazon Elastic Beanstalk,我正在使用一个库(weasyprint),它需要比AWS Beanstalk平台提供的版本更新的pip。我有一个.ebextensions文件,可以像这样升级pip: commands: 01_upgrade_pip: command: '/opt/python/run/venv/bin/pip install --upgrade pip' ignoreErrors: false 问题是,每次重建实例时,weasyprint安装都会失败,但如果我再次尝试在同一实例上部署,它

我正在使用一个库(
weasyprint
),它需要比AWS Beanstalk平台提供的版本更新的pip。我有一个
.ebextensions
文件,可以像这样升级pip:

commands:
  01_upgrade_pip:
    command: '/opt/python/run/venv/bin/pip install --upgrade pip'
    ignoreErrors: false
问题是,每次重建实例时,
weasyprint
安装都会失败,但如果我再次尝试在同一实例上部署,它就会成功部署。我的猜测是,在安装
weasyprint
之前,pip没有得到升级,然后第二次升级pip使其工作。是否有办法确保在创建实例后立即升级pip


我正在使用运行在64位Amazon Linux/2.9.7上的Python 3.6

您可以尝试以下方法:

commands:
  01_upgrade_pip:
    command: '/opt/python/run/venv/bin/pip install --upgrade pip && /opt/python/run/venv/bin/pip install weasyprint'
    ignoreErrors: false
commands:
      01_run_installer:
        command: 'bash /path/to/pip_install.sh'
        ignoreErrors: false
或者您可以创建一个类似于
pip\u install.sh
的文件,并执行以下操作:

commands:
  01_upgrade_pip:
    command: '/opt/python/run/venv/bin/pip install --upgrade pip && /opt/python/run/venv/bin/pip install weasyprint'
    ignoreErrors: false
commands:
      01_run_installer:
        command: 'bash /path/to/pip_install.sh'
        ignoreErrors: false
ElasticBeanstalk还支持docker,因此您可以在docker容器中运行所有内容,因此您可以完全控制安装


我确信这些方法中的一种会起作用,但我已经有一段时间没有使用ElasticBeanstalk了。

您进入命令提示符,必须为python文件的存放位置设置文件位置。之后你

upgrade pip

这就是您要做的所有事情,之后,您将能够实现所有功能。

我假设您的Beanstalk正在使用一些默认AMI创建ASG。如果是这种情况,您可以在ASG中创建/修改userdata文件,并在其中添加升级pip的步骤。或者,您可以检查是否有具有升级pip的AMI可用,然后您可以使用它。在查看详细信息时,我无法控制在EC2实例上直接执行什么-我只能使用
.ebextensions
来运行命令。我遇到的问题是命令似乎没有按正确的顺序运行。