python - 错误:命令“gcc”以退出状态失败 - 在 docker centos 上安装 ibm_db 时
问题描述
我正在尝试安装 ibm_db - python3.6 但无法进行 pip 安装。在 python 2.7 上安装成功,但在 3.6 上它抛出 gcc 错误
码头工人文件
RUN yum -y install python3
RUN yum install -y python34-devel python-devel centos-release-scl gcc libssl-dev openssl yum install gcc openssl-devel bzip2-devel libffi libffi-devel
RUN yum install -y python gcc gcc-c++ libgcc libstdc++ gnupg wget make git
RUN python --version
RUN which python
RUN pip --version
RUN python3 --version
RUN which python3
RUN pip3 --version
RUN python3.6 -m pip install -r scripts/requirements.txt
要求.txt
ibm_db==3.0.2
ibm-db-sa==0.3.5
SQLAlchemy==1.3.18
日志
08-Aug-2020 07:57:40 building 'ibm_db' extension
08-Aug-2020 07:57:40 creating build/temp.linux-x86_64-3.6
08-Aug-2020 07:57:40 gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Iclidriver/include -I/usr/include/python3.6m -c ibm_db.c -o build/temp.linux-x86_64-3.6/ibm_db.o
08-Aug-2020 07:57:40 ibm_db.c:27:20: fatal error: Python.h: No such file or directory
08-Aug-2020 07:57:40 #include <Python.h>
08-Aug-2020 07:57:40 ^
08-Aug-2020 07:57:40 compilation terminated.
08-Aug-2020 07:57:40 error: command 'gcc' failed with exit status 1
08-Aug-2020 07:57:40
08-Aug-2020 07:57:40 ----------------------------------------
08-Aug-2020 07:57:40 Command "/usr/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-fvpot_ia/ibm-db/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-yrktaypy-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-fvpot_ia/ibm-db/
08-Aug-2020 07:57:42 The command '/bin/sh -c python3.6 -m pip install -r scripts/requirements.txt' returned a non-zero code: 1
08-Aug-2020 07:57:42 make: *** [build] Error 1
解决方案
下面的 Dockerfile 是针对当前版本的 ibm_db 和 ibm_db_sa 以及 centos7 的 SQLAlchemy 的映像。
它适用于 x64 架构,无需编译 ibm_db。
更改 Dockerfile 以省略映像中不需要的包。较小的图像可以更快地构建并使用更少的存储空间。
此 Dockerfile 显示了将预配置db2dsdriver.cfg
到映像中复制到默认位置的可选步骤。
这让我db2cli
在使用 python ibm_db 之前在容器中使用以确保与数据库的连接。
db2cli 需要 LD_LIBRARY_PATH 来包含 clidriver\lib 目录,以确保 db2cli validate 将运行。
FROM centos:7
RUN yum install -y \
pam-devel \
pam.i686 \
libaio \
libstdc++-devel.i686 \
numactl-libs \
gcc \
gcc-c++ \
ksh \
numactl \
file \
kernel-devel \
vi \
sudo \
util-linux \
which \
openssh-clients \
zip \
unzip \
python3 \
python3-devel \
libssl_dev \
openssl \
openssl-devel \
bzip2-devel \
libffi \
libffi-devel \
libgcc \
wget \
make \
git \
libxml2 \
&& yum -y update \
&& yum clean all \
&& python3 -m pip install --upgrade pip \
&& python3 -m pip install ibm_db \
&& python3 -m pip install ibm_db_sa
ENV LD_LIBRARY_PATH="/usr/local/lib64/python3.6/site-packages/clidriver/lib:${LD_LIBRARY_PATH}"
# Optional - copy a preconfigured db2dsdriver.cfg to the image default location for db2cli to work
COPY db2dsdriver.cfg /usr/local/lib64/python3.6/site-packages/clidriver/cfg
推荐阅读
- android - 通过 Id 从本机代码更新 ImageView 本机 UI 组件
- javascript - 测试咖啡馆 - 单击使用客户端功能不可见的链接时出错
- javascript - 如何在点击 Braintree PayPal 结帐按钮时验证自定义表单?
- jsp - 使用 intellij IDEA 调试 JSP
- .net - 如何查询没有特定区域的 AWS 服务
- aws-lambda - Terraform 在针对 `localstack` 运行时卡在`刷新状态...`
- c# - 如果轨迹栏的输入是偶数,如何返回错误消息?
- javascript - 嵌套对象的解构数组别名
- angular - 如果预先选择了值(primeng multiselet),如何禁用其他字段?
- dji-sdk - DJI UX SDK 上的指南针航向