/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步。
/usr/bin/python: can't decompress data; zlib not available 的异常处理的更多相关文章
- 在centos6.7通过源码安装python3.6.7报错“zipimport.ZipImportError: can't decompress data; zlib not available”
在centos6.7通过源码安装python3.6.7报错: zipimport.ZipImportError: can't decompress data; zlib not available 从 ...
- zipimport.ZipImportError: can't decompress data; zlib not available 解决办法
第一步,下载python-pip的tar包 # wget https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz --no-che ...
- #!/usr/bin/env python与#!/usr/bin/python的区别
[摘自:http://blog.csdn.net/wh_19910525/article/details/8040494] 一般的python文件的开头都有#!/usr/bin/python.这是什么 ...
- Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用
#!/usr/bin/Python指定用什么解释器运行脚本以及解释器所在的位置 # -*- coding: utf-8 -*-用来指定文件编码为utf-8的 估计有不少人注意过一些python脚本开头 ...
- 关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
#!/usr/bin/python指定用什么解释器运行脚本以及解释器所在的位置 # -*- coding: utf-8 -*-用来指定文件编码为utf-8的PEP 0263 -- Defining P ...
- 【转】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
原文网址:http://www.crifan.com/python_head_meaning_for_usr_bin_python_coding_utf-8/ #!/usr/bin/python 是用 ...
- 【转载】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
1.#!/usr/bin/python 是用来说明脚本语言是 python 的 是要用 /usr/bin下面的程序(工具)python,这个解释器,来解释 python 脚本,来运行 python 脚 ...
- /usr/bin/python^M: 解释器错误: 没有那个文件或目录
遇见问题 因为linux在虚拟机中,所以就在本地敲python代码,敲完后再拿到虚拟机去执行,再输入./filename.py时,就遇到这样的一个问题: bash: ./filename.py: /u ...
- Python 头部 #!/usr/bin/python 和 #!/usr/bin/env 的区别
这个网址 https://www.cnblogs.com/scofi/p/4867851.html 讲述了Python 头部 #!/usr/bin/python 和 #!/usr/bin/env 的区 ...
随机推荐
- MVC 在视图中获取当前的Controller、Action的方式
在视图中获取Controller和Action的方式: Controller: @ViewContext.RouteData.Route.GetRouteData(this.Context).Valu ...
- [UI] 精美UI界面欣赏[2]
精美UI界面欣赏[2]
- swift版的GCD封装
swift版的GCD封装 说明 本人针对swift封装了GCD,包括GCDQueue,GCDGroup,GCDTimer以及GCDSemaphore,使用较为便利. 源码 https://github ...
- C 转义字符说明
%a(%A) 浮点数.十六进制数字和p-(P-)记数法(C99)%c 字符%d 有符号十进制整数%f 浮点数(包括float和doulbe)%e(%E) 浮点数指数输出[e-(E-)记数法]%g(%G ...
- Python入门-模块2(random模块、os模块)
>>> random.randomrange(1,10) #返回1-10之间的一个随机数,不包括10 >>> random.randint(1,10) #返回1-1 ...
- Linux 环境部署记录(二) - NFS文件共享
NFS文件共享服务 假设现有两台服务器IP地址分别为 192.168.0.2 和 192.168.0.3,192.168.0.2作为Server,192.168.0.3为Client,则: 两台机器都 ...
- windows下PyCharm安装及使用
一.首先安装pycharm,可以参考这篇文章:http://www.jianshu.com/p/042324342bf4 1.win10_X64,其他Win版本也可以. 2.PyCharm版本:Pro ...
- September 15th 2017 Week 37th Friday
First I need your hand, then forever can begin. 我需要牵着你的手,才能告诉你什么是永远. If you want to shake hands with ...
- 「PKUWC2018」随机算法
题目 思博状压写不出是不是没救了呀 首先我们直接状压当前最大独立集的大小显然是不对的,因为我们的答案还和我们考虑的顺序有关 我们发现最大独立集的个数好像不是很多,可能是\(O(n)\)级别的,于是我们 ...
- 02.Java入门
Java 是SUN(Starfard University Network)公司在1995年开发的一门完全面向对象的,开源的高级编程语言. Java的发展历史 1995年诞生,1996年发布第一个版本 ...