2017-10-10 113 views
0

我有星火執行人進口同類錯誤這裏所描述的,只是psycopg2:ImportError: No module named numpy on spark workers如何獲得pip-安裝的python軟件包的蛋或輪文件?

Here它說:「雖然大熊貓是太複雜,分佈爲* .py文件,你可以爲它創建和雞蛋的依賴關係並將其發送給執行者「。

所以問題是「如何從軟件包和它的依賴關係創建egg文件?」如果雞蛋是傳統的,那麼還是輪子。這是否有任何命令在點子?

回答

1

你想製作一個輪子。它們比雞蛋更新,更健壯,並且受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 

如果您使用Pyspark並需要打包依賴項,pip無法自動爲您執行此操作。 Pyspark有它自己的依賴管理,pip一無所知。就我所知,你可以做的最好的事情就是列出依賴關係,並用手推它們。

此外,Pyspark不依賴於numpy或psycopg2,所以如果所有你告訴pip的都是你的Pyspark版本,那麼pip不可能告訴你需要它們。這種依賴性是由你介紹的,所以你有責任把它交給Pyspark。作爲一個方面說明,我們使用引導腳本來安裝我們的依賴關係(比如numpy),然後引導我們的集羣。它似乎運作良好。這樣,你只需在腳本中列出你需要的庫,然後你就可以忘掉它。

HTH。

+0

是的,看到了。但是有很多這樣的車輪,而且很難爲我的系統選擇合適的車輪。點子以某種方式爲我選擇它。有什麼辦法可以告訴他加載它嗎? – Bunyk

+0

你用任何現有的輪子嘗試過嗎?版本之間的Numpy兼容性非常好。接口相對穩定。 – mwm314

+0

是的,我嘗試了psycopg2-2.7.3.1-cp27-cp27mu-manylinux1_x86_64.whl,它對我很有幫助。我只是問是否有辦法用pip,而不是用wget,因爲很難弄清楚我是否需​​要x86_64或i686或其他東西。點子知道確切的包。 – Bunyk

1

您可以使用pip install wheel安裝wheel

然後使用python setup.py bdist_wheel創建.whl。您可以在python包的根目錄下的dist目錄中找到它。如果您想爲python 2和python 3啓用單個.whl文件,您可能還想通過--universal

More info on wheel

相關問題