有一个名为Python的aiopg包,用于异步处理PostgreSQL数据库。它有两个依赖项- async-timeout和psycopg2-binary。我不希望它在使用psycopg2-binary时安装pip,因为我使用的是常规的psycopg2包。这是因为psycopg2-binary的作者不建议在生产中使用它。
这都不会造成在本地工作的任何问题,因为我可以将aiopg的所需依赖项添加到requirements.txt中,去掉不需要的依赖项,然后运行两个单独的命令:
pip install -r requirements.txtpip install aiopg --no-deps但是当我将我的项目推到Elastic Beanstalk时,它使用requirements.txt来安装Python包,而且我不知道如何运行附加的pip命令。
我尝试将pip3 install aiopg --no-deps和这个命令的不同变体添加到eb.config中(包括commands和container_commands部分),但都没有效果。
现在我的eb.config看起来是这样的:
packages:
yum:
amazon-linux-extras: []
commands:
01_postgres_activate:
command: sudo amazon-linux-extras enable postgresql11
02_postgres_install:
command: sudo yum install -y postgresql-devel
container_commands:
01_aiopg_install:
command: python3 -m pip install aiopg==1.2.1 --no-deps但这不是沃金。Bean秸秆环境处于Severe状态,我的web.stdout.log仍然包含以下错误:web: ModuleNotFoundError: No module named 'aiopg'。
那么,如何使用pip标记来实现这个附加的--no-deps命令,这个标志在requirements.txt文件中还不受支持?
发布于 2021-05-05 14:54:47
在贴出这个问题之前,我花了一整天的时间来解决这个问题。但一段时间后,我在谷歌上搜索了一些时间,尝试了几种其他方法,并找到了一个可行的解决方案。
我将问题中显示的eb.config文件中的最后一行更改为command: /var/app/venv/.../bin/python -m pip install aiopg==1.2.1 --no-deps,其中...应该被位于/var/app/venv/中的EC2实例中位于/var/app/venv/中的目录的名称替换。如果您将导出日志设置为pip (您将看到指向pip的env的完整路径),请将ssh放入您的实例中以查找该目录或在CloudWatch中搜索CloudWatch命令。
https://stackoverflow.com/questions/67400858
复制相似问题