google api 和 APscheduler

google api and APscheduler

所以我在使用这些库时遇到的问题是,当我尝试使用 cx_freeze 编译 python 脚本时,如果我有第 3 版的 APscheduler,它会拒绝编译

错误信息:

"ImportError: No module named 'apscheduler.executors.base_py3'"

当我尝试用 2.1.2 版本编译它时它编译但是当 运行 抛出一个错误说它不能导入 来自 apscheduler.schedulers.blocking 导入 BlockingScheduler

有没有人知道解决这个问题的方法或有解决方案?

代码如下:

import gspread, time, requests
from oauth2client.service_account import ServiceAccountCredentials
from apscheduler.schedulers.blocking import BlockingScheduler


def update():
    print("used")
    scope = ['https://spreadsheets.google.com/feeds']
    creds = ServiceAccountCredentials.from_json_keyfile_name('details.json', scope)
    client = gspread.authorize(creds)
    sheet = client.open('ip_display').sheet1

    userip = (requests.get("http://jsonip.com/").json())["ip"]

    row = [userip, ]

    sheet.update_cell(2, 1, userip)
    sheet.update_cell(2, 2, time.strftime("%H:%M:%S"))


scheduler = BlockingScheduler()
job = scheduler.add_job(update, 'interval', hours=1)

scheduler.start()

cx_freeze 依靠启发式方法来确定要包含哪些模块以及不包含哪些模块。这对 APScheduler 失败,因为它依赖于入口点(因此是动态导入)。因此,您必须明确地将 apscheduler 包添加到 cx_freeze 的所需模块列表中。