运行使用pyinstaller创建的exe时没有名为“ py4j.java_collections”的模块

时间:2019-08-29 14:18:06

标签: python pyspark exe pyinstaller

我使用pyinstaller为pySpark脚本创建了一个exe文件。但是,当我运行exe时,我遇到“没有名为'py4j.java_collections'的模块”错误。

pyinstaller版本-3.5

python版本-Python 3.7.1

火花版本-2.4.3

操作系统-Windows 10

我正在使用 pyinstaller -F myscript.py 命令创建exe。 我查找了其他线程,并在Windows环境变量中的路径变量下面添加了

PYTHONPATH = $ SPARK_HOME / python /:$ PYTHONPATH; $ SPARK_HOME / python / lib / py4j-0.8.2.1-src.zip:$ PYTHONPATH

SPARK_HOME = C:\ Users \\ Desktop \ spark \ spark-2.4.3-bin-hadoop2.7

我的脚本也具有用于输入和消息对话框的wx组件。

import glob
from pyspark.sql import SparkSession

#Spark Session
spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.some.config.option", "some-value") \
    .config("spark.sql.session.timeZone", "UTC") \
    .config("spark.sql.execution.pandas.respectSessionTimeZone", "False") \
    .getOrCreate()

try:
    app = wx.App()
    app.MainLoop()

    fileLocationBox = wx.TextEntryDialog(None, 'Enter File Directory :', 'Convert To CSV', 'Enter Parquet File Location')

    if fileLocationBox.ShowModal() == wx.ID_OK:
        fileLoc = fileLocationBox.GetValue()

    fileLocationBox.Destroy()

    files = [f for f in glob.glob(fileLoc + "**/*.parquet", recursive=True)]

    t = spark.read.load(files)

    t.coalesce(1).write.csv(fileLoc+'\\OutputCSV', header=True)

    dlg = wx.MessageDialog(None, "Output CSV generated", "Output", wx.OK)
    if dlg.ShowModal() == wx.ID_OK:
        dlg.Destroy()

except Exception as e:
    print ("ERROR:")
    print (type(e))     # the exception instance
    print (e.args)

我没有其他选择了。请帮助解决这个问题。

0 个答案:

没有答案