I am trying to make my selenium project(that scrapes some data from a website and converting it into a sheets file) into an .exe file using cx_Freeze. When I run the setup.py file it is successfully build me an .exe file but when Im trying to run it I get this error:
this is My setup.py code:
import sys
import os.path
from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need fine tuning.
# "packages": ["os"] is used as example only
build_exe_options = {"packages": ['gspread',
'oauth2client.service_account',
'selenium',
'selenium.webdriver',
'selenium.webdriver.chrome.service',
'webdriver_manager.chrome'],
"include_files": ['Dates.txt', 'credentials.json']
}
# base="Win32GUI" should be used only for Windows GUI app
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(
name="PerfumesTOSheets",
version="0.1",
description="Converts a website UI into sheets doc",
options={"build_exe": build_exe_options},
executables=[Executable("main.py", base=base)]
)
and this is my main.py code which is working successfully:
from datetime import date
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
urlM = 'https://www.myperfume.co.il/155567-%D7%9B%D7%9C-%D7%94%D7%9E%D7%95%D7%AA%D7%92%D7%99%D7%9D-%D7%9C%D7%92%D7%91' \
'%D7%A8?order=up_title&page=0'
urlF = 'https://www.myperfume.co.il/155569-%D7%9B%D7%9C-%D7%94%D7%9E%D7%95%D7%AA%D7%92%D7%99%D7%9D-%D7%9C%D7%90%D7%99' \
'%D7%A9%D7%94?order=up_title&page=0'
scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets',
"https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("credentials.json", scope)
client = gspread.authorize(creds)
spreadsheet = client.open("Perfumes")
options = ChromeOptions()
options.headless = True
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
MALE = []
FEMALE = []
elementsM = ' '
elementsF = ' '
lenM = 0
lenF = 0
while len(elementsM) + len(elementsF) != 0:
urlM = urlM[:-1] + str(int(urlM[-1]) + 1)
urlF = urlF[:-1] + str(int(urlF[-1]) + 1)
driver.get(urlM)
elementsM = driver.find_elements_by_css_selector("h3.title.text-center")
for i in elementsM:
lenM += 1
MALE.append(i.text)
# worksheet.update_cell(lenM + 5, 2, i.text)
driver.get(urlF)
elementsF = driver.find_elements_by_css_selector("h3.title.text-center")
for i in elementsF:
lenF += 1
FEMALE.append(i.text)
# worksheet.update_cell(lenF + 5, 6, i.text)
# for i in range(lenF - 6, lenF + 6):
# worksheet.update_cell(i, 1, i)
name = date.today().strftime("%d/%m/%Y") + " - 1"
with open('Dates.txt', 'a+') as dates:
dates.seek(0)
if name[:-1] == dates.readlines()[-1][:-1]:
dates.seek(0)
name = name[:-1] + str(int(dates.readlines()[-1][-1]) + 1)
dates.write('\n' + name)
worksheet = spreadsheet.add_worksheet(name, 1000, 10)
# male
cell_list = worksheet.range(f'B6:B{lenM + 6 - 1}')
for i, val in enumerate(MALE):
cell_list[i].value = val
worksheet.update_cells(cell_list)
# female
cell_list = worksheet.range(f'F6:F{lenF + 6 - 1}')
for i, val in enumerate(FEMALE):
cell_list[i].value = val
worksheet.update_cells(cell_list)
# id
cell_list = worksheet.range(f'A6:A{max(lenF, lenM) + 6 - 1}')
for i, val in enumerate(range(6, max(lenF, lenM) + 6)):
cell_list[i].value = val - 5
worksheet.update_cells(cell_list)
worksheet.update_cell(1, 1, "𝗠𝗔𝗟𝗘 𝗨𝗥𝗟")
worksheet.update_cell(2, 1, "𝗙𝗘𝗠𝗔𝗟𝗘 𝗨𝗥𝗟")
worksheet.update_cell(1, 2, urlM)
worksheet.update_cell(2, 2, urlF)
worksheet.update_cell(4, 1, '𝗜𝗗')
worksheet.update_cell(4, 2, '𝗠𝗔𝗟𝗘')
worksheet.update_cell(4, 6, '𝗙𝗘𝗠𝗔𝗟𝗘')
driver.quit()
def launchBrowser():
chrome_options = ChromeOptions()
chrome_options.add_argument("start-maximized")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), chrome_options=chrome_options)
driver.get('https://docs.google.com/spreadsheets/d/1tph6zGVZIUxElss95BMzPsAg7qWaqnplBxIJDpP1JwA/edit?usp=sharing')
return driver
driver = launchBrowser()
Does anyone knows how to fix this error?
Try leaving the base == None, it crashes for me when it is set to "Win32GUI"