如何将具有依赖关系的Python脚本打包成zip/tar文件?

5
我有一个Hadoop集群,正在使用Numpy、SciPy和Pandas进行数据分析。我想能够使用“--file”参数将我的Hadoop作业作为zip/tar文件提交。该zip文件应包含我的Python程序执行所需的所有内容,以便无论在集群中的哪个节点上执行脚本,都不会在运行时遇到ImportError。
由于公司政策的原因,在每个节点上安装这些库并不是完全可行的,特别是对于探索性/敏捷开发而言。但我已经安装了pip和virtualenv,可以根据需要创建沙盒。
我已经查看了zipimportpython packaging,但似乎没有满足我的需求,或者我很难使用这些工具。
有人成功做到了吗?我似乎找不到任何在线成功案例。
谢谢!

不确定这些特定的依赖关系,但是pex非常适合创建一个文件:https://pex.readthedocs.org/en/latest/ - Simeon Visser
1个回答

0

我曾经在Apache Spark和Python环境中解决过类似的问题,方法是创建一个Docker镜像,其中包含所需的Python库和Spark从节点脚本。将该镜像分发到其他机器上,当容器启动时,它会自动加入到集群中,我们只有一个这样的镜像/主机。

我们不断变化的Python项目与作业一起提交为zip文件,并从那里透明地导入工作。幸运的是,我们很少需要重新创建这些从节点镜像,并且我们不运行具有冲突要求的作业。

我不确定这在您的情况下是否适用,特别是因为(据我了解)某些Python库必须编译。


如果您方便分享的话,我非常有兴趣看一下那个“Spark从节点脚本”。 - Stuart
该脚本类似于https://github.com/nikonyrh/docker-scripts/blob/master/startSparkSlave.sh,它是“docker run”命令的包装器。最重要的是,它设置了SPARK_PUBLIC_DNS并使用了“--net host”,如https://dev59.com/rVwY5IYBdhLWcg3wWWq0#32737662所述。 - NikoNyrh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接