AWS Elastic Beanstalk Python(3.8)平台:除了使用`requirements.txt之外,还可以为带有`no deps`标志的Python包运行额外的pip命令`

AWS Elastic Beanstalk Python(3.8)平台:除了使用`requirements.txt之外,还可以为带有`no deps`标志的Python包运行额外的pip命令`,python,postgresql,pip,amazon-elastic-beanstalk,ebextensions,Python,Postgresql,Pip,Amazon Elastic Beanstalk,Ebextensions,有一个名为aiopg的Python包,用于异步处理PostgreSQL数据库。它有两个依赖项-async timeout和psycopg2 binary。我不希望它在使用pip时安装psycopg2 binary,因为我使用的是常规的psycopg2软件包。这是因为psycopg2 binary的作者不建议在生产中使用它 这一切都不会在本地工作时产生任何问题,因为我可以将所需的aiopg依赖项添加到requirements.txt中,省去不需要的依赖项,然后运行两个单独的命令: pip安装-r

有一个名为
aiopg
Python
包,用于异步处理
PostgreSQL
数据库。它有两个依赖项-
async timeout
psycopg2 binary
。我不希望它在使用
pip
时安装
psycopg2 binary
,因为我使用的是常规的
psycopg2
软件包。这是因为
psycopg2 binary
的作者不建议在生产中使用它

这一切都不会在本地工作时产生任何问题,因为我可以将所需的
aiopg
依赖项添加到
requirements.txt
中,省去不需要的依赖项,然后运行两个单独的命令:

  • pip安装-r requirements.txt
  • pip安装aiopg——无DEP
  • 但是当我将我的项目推到
    elasticbeanstalk
    时,它使用
    requirements.txt
    安装
    Python
    软件包,我不知道如何运行额外的
    pip
    命令

    我尝试将
    pip3 install aiopg--no deps
    以及此命令的不同变体添加到
    eb.config
    (同时添加到
    命令
    容器_命令
    部分),但没有效果

    现在我的
    eb.config
    看起来是这样的:

    软件包:
    百胜:
    亚马逊linux附加服务:[]
    命令:
    01_postgres_激活:
    命令:sudoamazonlinuxextrasenablepostgresql11
    02\u postgres\u安装:
    命令:sudo yum install-y postgresql-devel
    容器命令:
    01_aiopg_安装:
    命令:python3-m pip install aiopg==1.2.1——无deps
    
    但这不是工作。Beanstalk环境处于
    严重
    状态,my
    web.stdout.log
    仍包含以下错误:
    web:ModuleNotFoundError:没有名为“aiopg”的模块


    那么,我如何使用
    --no-deps
    标志来实现这个额外的
    pip
    命令,这个标志在
    requirements.txt
    文件中还不受支持吗?

    在发布这个问题之前,我花了一整天的时间试图解决这个问题。但在发布这篇文章后,我又在谷歌上搜索了一段时间,尝试了其他几种方法,找到了一个有效的解决方案

    我将问题中显示的
    eb.config
    文件中的最后一行更改为
    命令:/var/app/venv/../bin/python-m pip install aiopg==1.2.1——在Beanstalk的EC2实例中,不应该用
    /var/app/venv/
    中的目录名替换deps
    。如果您设置了将日志导出到
    CloudWatch
    (您将在那里看到
    pip
    的env的完整路径),请使用ssh连接到一个实例中查找此目录或在
    eb引擎.log中搜索
    pip
    命令