最终效果:运行python打包得.exe文件,下班到点后,点击左下角开始菜单想要关机时,弹出提示打卡,选择"知道了"则程序关闭,选择"再等等"程序休眠十分钟重新运行
环境:window,IDE:Intellij Idea
背景:下班忘记打卡,在电脑上做个提醒的小工具,顺便摸索下python,文章和程序经历磕磕绊绊修修改改,终于-->”粗糙“出炉,后续再优化
思路:暂定为定时+弹窗(后续再一步步优化)
目录
建议跳过此步
下载安装(建议使用Anaconda)下载地址:Python Releases for Windows | Python.org
朋友说2不更新了,索性直接下个最新的
环境变量中添加Python目录:
在命令提示框中(cmd) : 输入下面内容,后面是Python的安装目录。卸载验证了下,环境在安装完成就配置好了,真方便
Anaconda
如果你的电脑中已经安装过了python的环境(我最后卸载了),它会自动检测SDK。如果没有安装,这里推荐使用Anaconda
Anaconda配置
在Anaconda的安装目录下找到Scripts文件夹并进入,然后shift右键,选择在此处打开Powershell窗口(路径上输入cmd回车),输入以下命令
python -m pip install -U pip
将pip升级到最新
pip install numpy
如果因为移动python环境位置导致pip路径不对报错
可使用python -m pip install 包名,达到一样的效果
或者卸载重装:python -m pip uninstall pip,安全下载get-pip.py到当前文件夹:curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py,重新打开命令窗口执行:python get-pip.py其他:
- 如有No module named ‘pip错误 执行python -m ensurepip
- python -m pip install -U pip遇到用户权限问题, python -m pip install -U pip --user
配置清华的镜像源
Anaconda默认的镜像源在国外,换成清华的镜像源,提升下载速度
建立配置文件:
windows下的路径为 C:\Users\你的用户名\pip\pip.ini
linux下的路径为 ~/.pip/pip.conf
- 文件内容
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host=pypi.tuna.tsinghua.edu.cn
在之前提到的Scripts下打开命令行窗口,输入命令
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes
检测与更新
conda info conda list 可以查询现在安装了哪些库 conda update --all 把所有包进行更新,在提示是否更新的时候输入 y
建议去到环境变量的用户变量中删除了以下两个变量
- D:\szw\az\anaconda3\Scripts
- D:\szw\az\anaconda3
项目开始
pythonremind 项目目录
也不清楚python项目有什么规范,自己在网上扒拉创建的,后续找找看
python弹窗
import time, easygui easygui.msgbox("别忘了打卡!打卡!!", title="提醒",ok_button="知道啦")
python定时
import time easygui.msgbox("别忘了打卡!打卡!!", title="提醒",ok_button="知道啦") while True: current_time = time.localtime(time.time()) if((current_time.tm_hour == 17) and (current_time.tm_min == 30) and (current_time.tm_sec == 0)): print("Hello World"); time.sleep(1)
定时到下班时间,弹出提示框,但仅仅是这样肯定不够的,1、到点不一定走(加班呢)2、这样还不如定个闹钟方便
思路修改
思路:if到时间+if关机前 执行-弹窗提醒
安装pyHook3-监听电脑事件
pip install pyHook3
报错了: 缺少swig支持 error: command 'swig.exe' failed: No such file or directory
解压,路径添加到系统变量Path里
安装Microsoft visual c++ 14.0,
下载完成直接安装:https://sn9.us/file/1445568-239446865
再次运行错误:pip is configured with locations that require TLS/SSL
直接使用 Anaconda Prompt 执行(开始菜单)
- https://www.lfd.uci.edu/~gohlke/pythonlibs/
- ctrl+f 搜索我们想要的PyHook,找到对应的版本下载,没有3.8版本无奈下了个3.7的
最终版本与代码
# 定时提醒 import time, easygui, sys, pythoncom import PyHook3 as pyHook import pyautogui as pag # 弹出 i = 1; def func(b): global i; i += 1; if b: # easygui.msgbox("别忘了打卡!打卡!!", title="提醒",ok_button="知道啦") if easygui.ccbox("别忘了打卡!打卡!!",choices=("知道啦!", "再等等/(ㄒoㄒ)/~~")): sys.exit(0) else: time.sleep(600); i = 1 onMouseEvent # 监听到鼠标事件调用 def onMouseEvent(event): if (event.MessageName == "mouse left down") and (event.MessageName != "mouse move"): # 因为鼠标一动就会有很多mouse move,所以把这个过滤下 now = time.strftime('%X'); target = "17:30:00"; # target = "14:26:00"; # print(target); # print(now < target); x,y = pag.position() #返回鼠标的坐标 if (x < 40) and (y < 1079) and (y > 1040): # 鼠标坐标在左下角开始菜单 if (now > target) and i == 1: # 首次点击生效 func(now > target) return True # 为True才会正常调用,如果为False的话,此次事件被拦截 def main(): # 创建管理器 hm = pyHook.HookManager() # 监听鼠标 hm.MouseAll = onMouseEvent hm.HookMouse() # 循环监听 pythoncom.PumpMessages() if __name__ == "__main__": main()
if到时间+if关机前(判断鼠标左键是否点击开始菜单) 执行-弹窗提醒,确定(关闭)-再等等(十分钟后重新执行)
这样,一个简陋的定时提醒就完成了,
打包.exe文件
安装 pyinstaller
pip install pyinstaller // 安装 pyinstaller pyinstaller --version // 检查安装成功与否
打包
同级目录下执行命令:
pyinstaller -F remind.py pyinstaller -F remind.py ––noconsole // 打包后的 exe 运行去掉弹出的命令行提示窗口
点击执行
dist 下面有一个可执行文件,和脚本相同目录下,有一个.spec 文件,该文件会告诉 pyinstaller 如何处理你的所有脚本,同时包含了命令选项。一般不用去理会这个文件
运行失败~坎坷!
卸载pyinstaller从GitHub上下载安装
pip uninstall pyinstaller pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
重新打包,运行
查看与关闭python进程
wmic process where name="remind.exe" // 查看进程 taskkill /f /im remind.exe // 关闭进程
下班成功提示!
优化-打包文件过大
差评,几行代码打包200多m,Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去
虚拟环境里安装pyinstaller,版本太高有问题,将Python降级为3.6
Python版本降级(3.7->3.6)
3.7版本的Python降级为3.6,打开anaconda prompt:输入如下代码 conda install python=3.6 等待提示(y/n?)输入:y 等待降级过程,大约15分钟左右,会提示done 命令行输入:python exit()
安装pipenv
安装pipenv pip install pipenv 选一个好目录做我们的虚拟环境,然后在该目录下:注意python版本 pipenv install --python 3.6 激活进入虚拟环境 pipenv shell 安装依赖的库 pip install PyHook3 pip install easygui pip install pyautogui # pip install pythoncom # pip install pythoncom总是time out ,由于pytoncom存在于pywin32,直接安装 pywin32即可 pip install pywin32 解决python.exe 无法找到程序入口警报 pip install numpy pythoncom36.dll是pywin32的一个文件,位于路径Anaconda3\envs\pytorch(你的虚拟环境)\Lib\site-packages\pywin32_system32中, 而Anaconda3\envs\pytorch\Library\bin中也存在一个同名文件, 我将后者文件删除后便没有这个警报了 依赖展示 pipenv graph 打包的模块也要安装 # pip install pyinstaller pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip 开始打包,# 文件复制到本路径直接执行 pyinstaller -F remind.py ––noconsole # pyinstaller -D remind.py
后来发现打包成功文件也变小了,还是不能运行,找了很久是pythoncom的问题,多次搜寻后找到解决办法,打包执行以下命令
pyinstaller -F -p D:\szw\az\anaconda3\Lib\site-packages\pythoncom.py remind.py ––noconsole
-p 设置导入路径,可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径(导的我本地包路径,因为我本地跑正常)后又卸载重装了虚拟环境,执行成功(补充:末尾的注释删除了)
运行成功,大小200M缩减为11M
pipenv 使用基本命令
- 创建pipenv pipenv
- 启动pipenv pipenv shell(为存在虚拟环境可自动创建)
- 退出pipenv exit
- 查找所有安装包 piplist
- 环境内包的依赖展示 pipenv graph
- 查找虚拟环境的路径 pipenv --venv
- 卸载安装包 pipenv uninstall
- 删除当前虚拟环境 pipenv --rm
- 显示当前依赖关系图 pipenv grap
python项目如何在另一个环境上重新构建项目所需要的运行环境依赖包
- pip freeze > requirements.txt 会将环境中的依赖包全都加入
- pip install -r requirements.txt 创建一个新的环境可以导入
开机启动
代码地址:https://download.csdn.net/download/qq_44695727/12399741
更多方法:
python爬虫使用 requests-html爬取网页信息以及常用方法
Python爬虫之selenium(全套操作)常用的定位元素与常用方法
python入门-从安装环境配置(Anaconda)到做一个下班打卡提醒.exe小工具
于 2020-05-06 17:38:00 首次发布