python3使用pyinstaller打包apscheduler出的错
本来只是想用Python做一个定时任务小工具在服务器上运行,可是服务器在隔离区,各种禁止上外网,使用pip导出列表那种下载库的方法不管用,导致Python的各种库都下不到,官网离线下载又各种缺依赖,好气啊。后来查了一下,原来还有pyinstaller这种好东西,将需要的库和程序打包成一个可运行的程序,这正是我需要的。
为了测试pyinstaller,主要遇到了两个错误,一个是pkg_resources.DistributionNotFound,一个是ImportError: No module named。下面又开始说起,需要看主要解决办法的可以看大标题。
先搞一个测试小程序吧,这个程序很简单,每5s打印一次a:
#!/usr/bin/env python3
# -*- coding: utf-8 -*- from apscheduler.schedulers.blocking import BlockingScheduler def p():
print("a") if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_job(p, "cron",second='1/5') try:
scheduler.start()
except Exception as e:
pass
使用pyinstaller打包成一个单独可运行的文件:
pyinstaller -F test1.py
pkg_resources.DistributionNotFound
可是出错了,提示找不到APScheduler,可我已经下载了啊,苦闷。
Traceback (most recent call last):
File "test1.py", line 4, in <module>
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
File "<frozen importlib._bootstrap>", line 634, in _load_backward_compatible
File "c:\users\fstmp\appdata\local\programs\python\python35-32\lib\site-packag
es\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\apscheduler\__init__.py", line 2, in <module>
File "site-packages\pkg_resources\__init__.py", line 535, in get_distribution
File "site-packages\pkg_resources\__init__.py", line 415, in get_provider
File "site-packages\pkg_resources\__init__.py", line 943, in require
File "site-packages\pkg_resources\__init__.py", line 829, in resolve
pkg_resources.DistributionNotFound: The 'APScheduler' distribution was not found
and is required by the application
Failed to execute script test1
我查了一下,官方Issues给出了答案https://github.com/pyinstaller/pyinstaller/issues/1713
大概就是创建一个hook-ctypes.macholib.py,内容是:
#!/usr/bin/env python3
# -*- coding: utf-8 -*- from PyInstaller.utils.hooks import copy_metadata datas = copy_metadata('apscheduler')
然后打包的时候添加--additional-hooks-dir=
pyinstaller -F test1.py --additional-hooks-dir=.
可是,又出现了一个新问题ImportError: No module named
ImportError: No module named
Traceback (most recent call last):
File "site-packages\apscheduler\schedulers\base.py", line 880, in _create_plug
in_instance
KeyError: 'cron' During handling of the above exception, another exception occurred: Traceback (most recent call last):
File "test1.py", line 14, in <module>
File "site-packages\apscheduler\schedulers\base.py", line 411, in add_job
File "site-packages\apscheduler\schedulers\base.py", line 905, in _create_trig
ger
File "site-packages\apscheduler\schedulers\base.py", line 883, in _create_plug
in_instance
File "site-packages\pkg_resources\__init__.py", line 2229, in load
File "site-packages\pkg_resources\__init__.py", line 2235, in resolve
ImportError: No module named 'apscheduler.triggers.cron'
Failed to execute script test1
pkg_resources.DistributionNotFound问题好像解决了,但又来了一个新问题ImportError: No module named
看描述好像是cron哪里出了问题,把CronTrigger单独新建,修正后:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger def p():
print("a") if __name__ == '__main__':
scheduler = BlockingScheduler()
trigger = CronTrigger(second='1/5')
scheduler.add_job(p, trigger) try:
scheduler.start()
except Exception as e:
pass
经过上面修改后,应该可以正常运行了。如果你也有这样的问题,看看我的经验能不能帮到你?
python3使用pyinstaller打包apscheduler出的错的更多相关文章
- 【爬坑】python3+pyqt5+pyinstaller 打包成exe的各种问题
windows系统+python3+pyqt5+pyinstaller打包,经常会出现各种打包异常情况.如果代码没有特别异常,那么综合原因,大抵都是这四个元素之间的匹配问题,引起的.作者:一心狮链接: ...
- 【解决】MacOS下 Python3.7 使用 pyinstaller 打包后执行报错 Failed to execute script pyi_rth__tkinter
Fix tcl/tk libs inclusion in tkinter with Python3.7 under MacOS 使用 Pyinstaller 打包时候报错 3027 ERROR: Tc ...
- 【Python】解决使用pyinstaller打包Tkinker程序报错问题
问题描述 使用pyinstaller打包使用Tkinter编写的控制台程序,出现报错 15793 INFO: Adding Microsoft.Windows.Common-Controls to d ...
- moviepy应用pyinstaller打包后执行报错AttributeError: module audio/video.fx.all has no attribute fadein、crop
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在开发moviepy的Python程序使用pyinstaller打包后 ...
- python3 使用pyinstaller打包可执行程序
步骤 1.使用pip安装pyinstaller pip install pyinstaller 2. 使用pyinstaller打包程序 pyinstaller -F xxx.py pyinstall ...
- python3.6 pyinstaller 打包exe
现在的pyinstaller 最新版本已经支持python3.6版本的打包了只需要进行如下的操作即可 1. pip install pyinstaller 2. pip install --upgra ...
- 用tkinter写出you-get下载器界面,并用pyinstaller打包成exe文件
本文为原创文章,转载请标明出处 一.you-get介绍 you-get是一个基于 python 3 的下载工具,使用 you-get 可以很轻松的下载到网络上的视频.图片及音乐.目前支持网易云音乐.A ...
- 【Python】pyinstaller打包运行报错failed to execute script main
前言 最近用pyinstaller打包的时候一直报"failed to execute script main". 最终使用"pyinstaller --hidden-i ...
- Python PyInstaller 打包报错:AttributeError: 'str' object has no attribute 'items'
pyinstaller打包时报错:AttributeError: 'str' object has no attribute 'items' 网上查询,可能是setuptools比较老: 更新一下 p ...
随机推荐
- Console.In.ReadToEnd() 控制台 输入完毕
输入完数据后 按回车(另起一行) ctrl+z enter .......百度了半天 没百度到..最后还是google 强大..解决了问题 ..
- SpringMVC类型转换器、属性编辑器
对于MVC框架,参数绑定一直觉得是很神奇很方便的一个东西,在参数绑定的过程中利用了属性编辑器.类型转换器 参数绑定流程 参数绑定:把请求中的数据,转化成指定类型的对象,交给处理请求的方法 请求进入到D ...
- js—模糊查询
首先要明白什么是模糊查询(废话又来了),就是根据关键字把列表中符合关键字的一项或某项罗列出来,也就是要检查列表的每一项中是否含有关键字,因此抽象一下就是一个字符串中是否含有某个字符或者字符串. 以下例 ...
- SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)
把沙盒解决方案上传到目标站点的"解决方案"库中,发现"激活"按钮是灰掉的,不可用. 首先,我想到的是权限不足,所以 "以管理员身份"启动IE ...
- low security dvwa--SQL Injection(Blind)
1.输入单引号,结果如下: 2.输入永真式 ' and 1=1; -- 结果如下: 多次测试,如果输入的条件为假,就会返回1中的结果,为真则返回2中的结果,由此说明这属于SQL盲注. 3.猜解用户名长 ...
- 2015 Autodesk 开发者日( DevDays)和 助力开发周火热报名中
Autodesk 软件(中国)有限公司 ADN 市场部真诚地邀请您参加我们一年一度的 "Autodesk 开发者日"(简称 DevDays),以及第一次随同开发者日举办的" ...
- ios UIWebView自定义Alert风格的弹框
之前开发过一个App,因为公司之前写好了网页版的内容和安卓版本的App,我进去后老板要求我ios直接用网页的内容,而不需要自己再搭建框架.我一听,偷笑了,这不就是一个UIWebView吗?简单! 但是 ...
- iOS开发 引用第三方库出现duplicate symbol时的处理方法
该篇文章是我自己从我的新浪博客上摘抄过来的, 原文链接为: http://blog.sina.com.cn/s/blog_dcc636350102wat5.html 在iOS开发中, 难免 ...
- webform(八)——LinQ简单增、删、改、查
一.简单介绍 1.LinQ to Sql类(NET Language Integrated Query (LINQ) ) LINQ定义了大约40个查询操作符,如select.from.in.where ...
- Oracle学习笔记十 使用PL/SQL
PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...