如何将具有所有依赖项的python包安装到Docker映像中?

2024-03-28 21:08:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Ubuntu 15.10中使用的是Pysparkjupyter/Pyspark笔记本的Docker容器。我需要安装folium及其所有依赖项,并在容器中运行Pyspark脚本。我成功地安装了Docker,提取了图像并用命令运行它

docker run -d -p 8888:8888 -p 4040:4040 -v /home/$MYUSER/$MYPROJECT:/home/jovyan/work jupyter/pyspark-notebook

然后,我执行代码示例,没有任何问题

import pyspark
sc = pyspark.SparkContext('local[*]')

# do something to prove it works
rdd = sc.parallelize(range(1000))
rdd.takeSample(False, 5)

我在/opt/conda(正如在documentation中所说)中查找conda环境,但在我的/opt文件夹中没有conda。然后,我安装了miniconda3和folium,将所有依赖项作为一个普通的Python包(不涉及Docker)。

它不起作用。当我运行图像并尝试导入带有import folium的包时,它找不到folium包:

ImportErrorTraceback (most recent call last)
<ipython-input-1-af6e4f19ef00> in <module>()
----> 1 import folium

ImportError: No module named 'folium'

所以这个问题可以归结为两个问题:

  1. 集装箱在哪里?
  2. 如何将所需的Python包安装到容器中?

Tags: docker图像importhomeubuntuconda容器pyspark
1条回答
网友
1楼 · 发布于 2024-03-28 21:08:44

要回答第一个问题,conda环境在哪里?我们只需要在控制台中执行。

第二个问题有两个选择:

  • 我们可以通过执行命令打开容器控制台

    $ docker exec -it my_containers_name /bin/bash

    像普通的conda包一样安装这个包

    conda install --channel https://conda.anaconda.org/conda-forge folium

  • 我们可以修改Docker镜像的Dockerfile或者创建一个新的扩展前一个的Dockerfile。创建新的Dockerfile并添加行

    FROM jupyter/minimal-notebook
    USER jovyan
    RUN conda install --quiet --yes --channel https://conda.anaconda.org/conda-forge folium && conda clean -tipsy
    

    树立我们的新形象。如果我们想修改原始的Dockerfile,我们必须跳过第一行。

我通过分叉original project创建自己的Dockerfile

感谢warmoverflowShanShan的评论

相关问题 更多 >