如何在Docker容器中安装不同的python版本

时间:2019-08-16 04:33:10

标签: python docker pyspark

我在机器中安装了gettyimages/spark docker映像和jupyter/pyspark-notebook

尽管gettyimage/spark python版本是3.5.3,而jupyter/pyspark-notebook python版本是3.7,但会出现以下错误:

  

例外:worker中的Python版本与版本中的Python版本3.5不同   驱动程式3.7,PySpark无法在其他次要版本上执行。   检查环境变量PYSPARK_PYTHON和PYSPARK_DRIVER_PYTHON   设置正确。

因此,我尝试升级gettyimage/spark映像的python版本或降级jupyter/pyspark-notebook docker映像的python版本以进行修复。

  • 让我们先谈谈方法1,降级jupyter/pyspark-notebook python版本:

我使用conda install python=3.5降级了jupyter/pyspark-notebook码头工人图像的python版本。但是,这样做之后,我的jupyter笔记本无法连接到任何单个ipynb,并且内核似乎已死。另外,当我再次输入conda时,它显示了conda command not found,但是python终端运行良好

我已经比较了降级前后的sys.path

  

['','/ usr / local / spark / python',   '/usr/local/spark/python/lib/py4j-0.10.7-src.zip',   '/opt/conda/lib/python35.zip','/opt/conda/lib/python3.5',   '/opt/conda/lib/python3.5/plat-linux',   '/opt/conda/lib/python3.5/lib-dynload',   '/opt/conda/lib/python3.5/site-packages']

     

['','/ usr / local / spark / python',   '/usr/local/spark/python/lib/py4j-0.10.7-src.zip',   '/opt/conda/lib/python37.zip','/opt/conda/lib/python3.7',   '/opt/conda/lib/python3.7/lib-dynload',   '/opt/conda/lib/python3.7/site-packages']

我认为或多或少是正确的。那么,为什么我不能使用我的jupyter笔记本连接到狗窝?

  • 因此,我使用另一种方法,我尝试升级gettyimage/spark图片
  

sudo docker run -it gettyimages / spark:2.4.1-hadoop-3.0 apt-get安装   python3.7.3; python3 -v

但是,我发现即使我这样做,也无法很好地运行火花。

我不太确定该怎么做。可以和我分享一下如何修改Docker映像内部软件包的版本

1 个答案:

答案 0 :(得分:0)

如果我查看Dockerfile here,它会安装python3,默认情况下,它会为debian:stretch安装python 3.5。您可以改为通过编辑Dockerfile并自行构建来安装python 3.7。在Dockerfile中,删除第19-25行,并用以下内容替换第1行,然后在本地构建映像。

FROM python:3.7-stretch

如果您不熟悉构建自己的映像,请下载Dockerfile并将其保存在其自己的独立目录中。然后在cd进入目录后,运行下面的命令。您可能需要先删除已经下载的图像。之后,您应该能够以与从docker hub拉出映像相同的方式运行其他docker命令。

docker build -t gettyimages/spark .
相关问题