如何获取pip安装的python包的egg或wheel文件?

Bun*_*nyk 5 python pip python-wheel pyspark

我在 Spark 执行程序上有类似的导入错误,如这里所述,只是使用 psycopg2:ImportError: No module named numpy on spark workers

这里说“虽然熊猫太复杂了,无法作为 *.py 文件分发,但您可以为它及其依赖项创建一个 egg 并将其发送给执行程序”。

所以问题是“如何从包及其依赖项创建egg文件?” 或轮子,以防鸡蛋是遗产。在 pip 中是否有任何命令?

Mat*_*ith 5

你想做一个轮子。它们比鸡蛋更新、更健壮,并且受到 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),然后再引导我们的集群。它似乎运作良好。这样你就可以在脚本中列出一次你需要的库,然后你就可以忘记它了。

哈。