/usr/bin/python: can't decompress data; zlib not available 的異常處理


1. 問題背景

使用Pycharm連接遠程服務器端pipenv虛擬環境的python解釋器,運行python spark腳本時報錯如下錯誤:

2018-09-12 23:56:00 ERROR Executor:91 - Exception in task 0.0 in stage 0.0 (TID 0)
org.apache.spark.SparkException:
Error from python worker:
/usr/bin/python: can't decompress data; zlib not available
PYTHONPATH was:
/home/kangwang/.local/share/virtualenvs/pyspark-C8JL9jUk/lib/python3.5/site-packages/pyspark/python/lib/pyspark.zip:/home/kangwang/.local/share/virtualenvs/pyspark-C8JL9jUk/lib/python3.5/site-packages/pyspark/python/lib/py4j-0.10.7-src.zip:/home/kangwang/.local/share/virtualenvs/pyspark-C8JL9jUk/lib/python3.5/site-packages/pyspark/jars/spark-core_2.11-2.3.1.jar:/home/kangwang/.pycharm_helpers/pycharm_matplotlib_backend:/home/kangwang/myproject/pyspark
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:392)

百度這個方法 https://blog.csdn.net/iejtyq/article/details/64438398,發現無效,所以需要繼續分析。

2. 問題分析

我是用pipenv在個人目錄 myproject/pyspark下創建的虛擬環境,用來存放pyspark工程,其中python3.5解釋器的安裝路徑為下面所示:

根據報錯信息,可能是缺少相關依賴包,根據這篇博客https://blog.csdn.net/iejtyq/article/details/64438398 的做法,發現問題並沒有得到解決,繼續觀察報錯信息,發現其中的python解釋器路徑與我虛擬環境里的路徑不一致,所以會不會是解釋器的問題了呢?

在服務器的虛擬環境下按以下方式執行test.py文件,發現並無報錯。由此,結合上面報錯信息,可知報錯原因是Pycharm在Run test.py 時並沒有成功使用虛擬環境下的python解釋器。

3. 解決辦法

把虛擬環境下的python解釋器加到pycharm中.py腳本的環境變量中,即 PATH=/home/kangwang/.local/share/virtualenvs/pyspark-C8JL9jUk/bin:$PATH

具體步驟為1~7步:

 

 

以上,就是這個腳本的環境變量配置過程。

 

如果工程下的腳本都在服務器同一個虛擬環境下運行,采用上面那樣一個一個腳本配置環境變量的方法會很繁瑣,因此,可對整個工程下的環境變量進行設置:

 

注意:工程下的環境變量的設置后,在該工程下創建新的.py文件時會自動添加已有的環境變量配置。然而,當重啟Pycharm並再次進去該工程下創建新的.py文件時,之前設置的工程下的環境變量將失效,即不會保存。所以,在重啟pycharm后,還需要再次重復上面8~15步。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM