首页 > 解决方案 > 无法在 docker 映像中导入 cx_Oracle

问题描述

我正在用 docker 构建一个 python 文件。在这个 python 文件中,我import cx_Oracle用 oracle 做一些事情。我可以通过 ternimal 成功运行 python 文件:

[root@master files]# python3 myfile.py

然后我基于这个文件构建了一个 docker 镜像。以下是 的内容Dockerfile

FROM python:3.6
ENV PYTHONPATH /root/files
WORKDIR ./
COPY myfile.py ./
CMD [ "python3", "myfile.py" ]

然后构建镜像: [root@master files]# docker build -f Dockerfile -t test:1.0 . 构建成功。但是,当我尝试通过docker run --name test test:1.0它运行图像时,会出现错误:

Traceback (most recent call last):
  File "TimedTransfer.py", line 4, in <module>
    from Transfer import TransferTPI
  File "/Transfer.py", line 7, in <module>
    import cx_Oracle
ModuleNotFoundError: No module named 'cx_Oracle'

有人可以告诉我如何解决这个问题吗?

标签: pythonoracledockercx-oracle

解决方案


您可以在 Dockerfile 中添加一行,然后 Dockerfile 将如下所示:

FROM python:3.6
ENV PYTHONPATH /root/files

# install the 'cx_Oracle' module
RUN apt-get -y update && python3 -m pip install cx_Oracle --upgrade

WORKDIR ./
COPY myfile.py ./
CMD [ "python3", "myfile.py" ]

然后图像将包含“cx_Oracle”模块。


推荐阅读