Bun*_*nyk 5 python pip python-wheel pyspark
我在 Spark 执行程序上有类似的导入错误,如这里所述,只是使用 psycopg2:ImportError: No module named numpy on spark workers
这里说“虽然熊猫太复杂了,无法作为 *.py 文件分发,但您可以为它及其依赖项创建一个 egg 并将其发送给执行程序”。
所以问题是“如何从包及其依赖项创建egg文件?” 或轮子,以防鸡蛋是遗产。在 pip 中是否有任何命令?
你想做一个轮子。它们比鸡蛋更新、更健壮,并且受到 Python 2/3 的支持。
对于像 numpy 这样流行的东西,你不需要费心自己制作轮子。他们在他们的发行版中打包了轮子,所以你可以下载它。许多 python 库将有一个轮子作为其发行版的一部分。见这里:https : //pypi.python.org/pypi/numpy
如果您很好奇,请在此处查看如何制作一个:https : //pip.pypa.io/en/stable/reference/pip_wheel/。
或者,您可以在目标工作人员上安装 numpy。
编辑:
在您发表评论后,我认为有必要提及 pipdeptree 实用程序。如果您需要手动查看 pip 依赖项是什么,此实用程序将为您列出它们。下面是一个例子:
$ pipdeptree
3to2==1.1.1
anaconda-navigator==1.2.1
ansible==2.2.1.0
- jinja2 [required: <2.9, installed: 2.8]
- MarkupSafe [required: Any, installed: 0.23]
- paramiko [required: Any, installed: 2.1.1]
- cryptography [required: >=1.1, installed: 1.4]
- cffi [required: >=1.4.1, installed: 1.6.0]
- pycparser [required: Any, installed: 2.14]
- enum34 [required: Any, installed: 1.1.6]
- idna [required: >=2.0, installed: 2.1]
- ipaddress [required: Any, installed: 1.0.16]
- pyasn1 [required: >=0.1.8, installed: 0.1.9]
- setuptools [required: >=11.3, installed: 23.0.0]
- six [required: >=1.4.1, installed: 1.10.0]
- pyasn1 [required: >=0.1.7, installed: 0.1.9]
- pycrypto [required: >=2.6, installed: 2.6.1]
- PyYAML [required: Any, installed: 3.11]
- setuptools [required: Any, installed: 23.0.0
Run Code Online (Sandbox Code Playgroud)
如果您正在使用 Pyspark 并且需要打包您的依赖项,pip 无法自动为您执行此操作。Pyspark 有自己的依赖管理,pip 对此一无所知。据我所知,您能做的最好的事情就是列出依赖项并手动将它们推过去。
此外,Pyspark 不依赖于 numpy 或 psycopg2,因此如果您只告诉 pip 是您的 Pyspark 版本,则 pip 不可能告诉您您需要它们。该依赖项已由您引入,因此您有责任将其提供给 Pyspark。
作为旁注,我们使用引导脚本来安装我们的依赖项(如 numpy),然后再引导我们的集群。它似乎运作良好。这样你就可以在脚本中列出一次你需要的库,然后你就可以忘记它了。
哈。
| 归档时间: |
|
| 查看次数: |
6732 次 |
| 最近记录: |