python - 无法在 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'
有人可以告诉我如何解决这个问题吗?
解决方案
您可以在 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”模块。
推荐阅读
- ios - 如何使用 UIBezierPath 绘制此复选框图标?
- php - bitbake:向 php 配方添加 php-intl 支持
- css - Flex box 方向列:对齐具有多个高度的项目
- sql - 使用动态变量时如何“联合”来自 SQL 查询的结果?
- java - 素数检测器不工作
- php - 创建动态 ID 并将最后一个循环用作父 ID
- java - 无法从任何配置的存储库解析原型 org.apache.maven.archetypes:maven-archetype-quicstart:1.1
- c# - c# WPF应用程序使用CLI问题
- vhdl - 如何在 VHDL 中实例化通用设计的参数化版本?
- python - 将列表列表连接到单个熊猫数据框中的有效方法