编译到exe后,pyinstaller和geckodriver生成问题

问题描述 投票:0回答:1

我希望我能在这里得到帮助。我正在编写程序,每隔两分钟就会读取并导出到txt'设备实时记录事件'。一切正常,直到我生成exe文件。更有趣的是,程序适用于我的环境(安装了geckodriver和python库),但在没有python环境的计算机上不起作用。即使我使用--onedir生成exe。任何想法或提示?代码的一部分在下面(没有tkinter):

browser = webdriver.Firefox()

def logs():
    global writing
    global browser
    logs_content = browser.find_element_by_css_selector(".content")
    if writing:
        curent_time = datetime.datetime.now()
        threading.Timer(120, logs).start()
        save_path = 'C:/Users/' + getpass.getuser() + '/Desktop/Logs ' + curent_time.strftime("%d-%B-%Y") + '.txt'
        with open(save_path, "w") as logs_txt:
            logs_txt.write(logs_content.text)

def enter_to_IDE():
    username = browser.find_element_by_id("username")
    username_input = login.get()
    username.send_keys(username_input)
    browser.find_element_by_id("next-step-btn").click()
    time.sleep(5)
    password_css = browser.find_element_by_id("password")
    password_input = password.get()
    password_css.send_keys(password_input)
    browser.find_element_by_id("login-user-btn").click()
    time.sleep(10)
    logs()

def US_shard():
    global browser
    browser.get('link')
    enter_to_IDE()


def EU_shard():
    global browser
    browser.get('link')
    enter_to_IDE()
python-3.x selenium-webdriver tkinter pyinstaller gecko
1个回答
0
投票

对于未来的谷歌用户......

如果您在使用qazxsw poi尝试构建qazxsw poi python脚本可执行文件时遇到问题

  1. 阅读以上Selenium的链接和评论
  2. 通过编辑pyinstaller文件或使用furas将geckodriver添加到构建中
  3. 默认WebDriver构造函数(上面使用)搜索PATH以查找geckodriver,因此如果驱动程序不在系统PATH中,则需要告诉代码在哪里查找驱动程序 一个用户安德鲁,有一个很好的例子.spec

步骤3的问题在于获得一个既可以在本地解释器中工作的“位置”,也可以在您构建的可执行文件中工作。 PC上的硬编码位置在exe文件中不起作用。所以要注意--add-data ="<gecko location>;<build location>"中的源和目的地,也许使用相对路径。

因为我正在使用具有许多用户的存储库,所以我最终没有使用“all in one”选项。相反,我写了指令来复制here和我的--add-data文件。

这个2文件解决方案在exe文件中不需要geckodriver。因为Windows在搜索PATH时首先检查您所在的本地文件夹。 geckodriver.exe

希望有足够的面包屑来帮助未来的访客。另请查看此链接以获取sample.exe中的命令

source

© www.soinside.com 2019 - 2024. All rights reserved.