pyhook3安装教程及与之相关的一些问题的解决方法_pyhook3怎么安装-程序员宅基地

技术标签: python  pyhook3  

pyHook3是一个python库包,为Windows中的全局鼠标和键盘事件提供回调,可用于监听鼠标和键盘操作,接下来我就说一说如何安装pyhook3。

一、安装swig

1、pyhook3的编译需要swig工具的支持,所以我们首先需要安装swig,直接点击swig下载(也可以复制此链接https://sourceforge.net/projects/swig/files/swigwin/swigwin-3.0.12/swigwin-3.0.12.zip/download?use_mirror=nchc),跳转到下载页面便会自动下载swig安装包。在这里插入图片描述
2、下载完成后将swig压缩包解压缩到你想要安装的目录下
在这里插入图片描述在这里插入图片描述
3、点击swig.exe安装swig
在这里插入图片描述
4、复制swig文件所在的当前路径配置环境变量
在这里插入图片描述
在这里插入图片描述

二、下载visual c++ 14.0

若电脑中没有visual c++ 14.0环境,在安装pyhook时会报错visual c++ 14.0 is required,所以pyhook3的安装还需要c++build工具的支持,直接点击下载visual studio,点击安装后会执行安装程序安装visual studio,此时会跳出如下界面,我们勾选C++的桌面开发,然后勾选右下角箭头所指的那一条,那便是我们安装pyhook3需要的工具,当然我们也可以直接去网上搜索Microsoft Visual C++ 14.0进行安装。
在这里插入图片描述

三、pip 安装pyhook3

我们可以直接在cmd下用pip安装pyhook3,但是用pip安装的pyhook3版本可能和你电脑的python版本不一致,这时就会报编码错误。我们可以去非官方的python扩展包中去找适合自己python版本的pyhook3轮子,然后再使用pip安装。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更新


之前写的第三步完全是错的,但我就不删了,你们可以做个借鉴,我也是在导入库包的时候发现import pyhook,并没有PyHook3。

那么错在哪呢?首先在python3环境下使用pip安装的官方包不一定与你的版本匹配,我的是python3.6,官方是没有这个版本的pyhook3的,具体可以去pypi官网看到,所以如果你的版本与下图中的不一致,就只能下载最后一个压缩包使用setup自行安装,安装成功后你就可以导入库包import PyHook3。
在这里插入图片描述
我在安装的过程中还出现一个问题,明明已经安装了visual c++ 14.0(2015),但还是会报错其运行失败,但在这之前还有一个错误,其实那才是出错的根源,fatal error LNK1158: cannot run ‘rc.exe’。然后我去网上查了一下,我们需要将C:\Program Files (x86)\Windows Kits\8.0\bin\x86目录下的rc.exe rcdll.dll这两个文件复制到C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin目录下(也就是visual c++ 14.0的安装目录),问题就完美解决了

这里再说一点,为什么我们一直纠结于pyhook的版本?
  如果你是在python2的环境下使用pyhook2和3版本都是没有问题的,但是如果是在python3环境下使用pyhook2是会出错的。我们使用IDE编写代码并运行监视鼠标操作,当鼠标移动到任务栏的时候就会报错并异常中断。原因是在python3环境下调用pyhook2库获取窗口名时,会因为编码冲突无法识别获取到的窗口名。这个很好理解,例如我们使用非UTF-8的编码格式存储的文档在某些办公软件中打开会有乱码一样,这就是因为编码格式冲突造成的无法识别某些字符。所以要想在python3下使用pyhook,只能用pyhook3版本。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tian_tian_hero/article/details/88569907

智能推荐

容器三把斧之 | cgroup原理与实现_struct list_headtasks;-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏12次。前面我们介绍了CGroup的使用与基本概念,接下来将通过分析源码(本文使用的 Linux2.6.25 版本)来介绍CGroup的实现原理。在分析源码前,我们先介绍几个重要的数据结构,因为CGroup就是通过这几个数据结构来控制进程组对各种资源的使用。cgroup结构体前面介绍过,cgroup是用来控制进程组对各种资源的使用,而在内核中,cgroup是通过cgroup结构体来描述的,我们来看看其定义:structcgroup{unsignedlongfla..._struct list_headtasks;

SpringMVC初认识_兔头程序员-程序员宅基地

文章浏览阅读164次。SpringMVCMVC1. 什么是MVC?MVC是一种框架模式,是Model View Controller(模型-视图-控制器)的缩写。Model 模型数据模型,提供要展示的数据,用于封装数据View 视图展示数据Controller 控制器控制模型的数据要在哪一个视图展示2. 作用MVC模式使展示与模型分离,流程控制逻辑、业务逻辑调用与展示分离。最终实现系统的职能分工。3. 优缺点优点耦合性低重用性高生命周期成本低部署快可维护性高有利于软件工程化管理_兔头程序员

Svchost.exe进程详解及Svchost.exe病毒清除方法_svchost.exe -k rpcss-程序员宅基地

文章浏览阅读2.3w次,点赞3次,收藏18次。这几天在宿舍上网的时候其他的舍友反映网络特别的卡。不知道是什么原因。然后我就发现自己的电脑有一个程序,自己走流量而且每秒能达100kb以上对于宿舍8个人共用的一个4M的网线来说已经算是占了好大一部分网速了。在金山流量监控上发现这个程序叫Svchost.exe。这是一个什么程序呢。然后我就尝试禁用。但我发现win7的任务管理器的进程中是找不到这个进程的。然后我通过上网了解了这个进程。 s_svchost.exe -k rpcss

java中修改对象类的数据_Java基础09 类数据与类方法-程序员宅基地

文章浏览阅读728次。我们一直是为了产生对象而定义类(class)的。对象是具有功能的实体,而类是对象的类型分类。这是面向对象的一个基本概念。在继承(inheritance)中,我们将类当做可以拓展的主体,这提高了我们对“类”的认识。类本身还有许多值得讨论的地方。我们将继续深入。static数据成员有一些数据用于表述类的状态。比如Human类,我们可以用“人口”来表示Human类的对象的总数。“人口”直接描述类的状态,..._java中如何用方法来改变一个类的值

hdu 2066:一个人的旅行_输入数据:每组的第一行是三个整数t,s和d,表示有t条路,和去往临近城市高铁站、火车-程序员宅基地

文章浏览阅读448次。草儿决定要在最短的时间去一个自己想去的地方,因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车。多组输入数据,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=接着的第T+1行有S个数,表示和草儿家相连的城市;接着的第T+2行有D个_输入数据:每组的第一行是三个整数t,s和d,表示有t条路,和去往临近城市高铁站、火车

java统计字符串中每个字符出现的次数_java string 统计某个字符出现的次数-程序员宅基地

文章浏览阅读6.3w次,点赞33次,收藏76次。例如String str = “abcaaaefdabbhg”; 统计该字符串中每个字符出现的次数,输出: a====5 b====3 c====1 d====1 e====1 f====1 g====1 h====1方法一: 采用HashMappublic static void count(String str){ //将字符串转化为字符数组_java string 统计某个字符出现的次数

随便推点

python 数据存储方式_数据存储是什么python-程序员宅基地

文章浏览阅读1.9k次。blog.csdn.net/ffblog/article/details/46558051一.序列1.用于存储一系列的数据2.在内存中,序列就是一块用于存放多个值的连续的内存空间如a=[10,20,30,40]存储示意:3.python中序列结构:str,list,tuple,dict,set..._数据存储是什么python

【语音去噪】IIR+FIR滤波器语音信号去噪(含滤波前后对比图)【含Matlab源码 4062期】-程序员宅基地

文章浏览阅读354次,点赞4次,收藏4次。IIR+FIR滤波器语音信号去噪(含滤波前后对比图)完整的代码,包运行;运行操作视频见CSDN资源!适合小白!

Tensorflow-hub[例子解析1]-程序员宅基地

文章浏览阅读364次。0. 引言Tensorflow于1.7之后推出了tensorflow hub,其是一个适合于迁移学习的部分,主要通过将tensorflow的训练好的模型进行模块划分,并可以再次加以利用。不过介于推出不久,目前只有图像的分类和文本的分类以及少量其他模型这里先通过几个简单的例子,来展示该hub的使用流程。1. 一个超简单例子1.1 创建一个Module#该文件名为half_plus_two..._tensorflow hub、py

Linux利用重定向三步搞定请求百度主页源代码_linux socket 访问百度-程序员宅基地

文章浏览阅读1.4k次。Linux利用重定向三步搞定请求百度主页源代码第一步:新建文件描述符,简历与百度通信的socket通道exec 8<> /dev/tcp/www.baidu.com/80命令解释:8:新建的文件描述符<>:既要发送请求,又要接收响应数据/dev/tcp:这个目录看不到,但内核确实有一旦执行该命令,就会新建一个socket连接删除文件描述符:..._linux socket 访问百度

C primer plus(第六版) 第七章答案_第七章单元测试提交作业6. 单选题(2分)下图中哪个点是最小方差点?( )。a点cb-程序员宅基地

文章浏览阅读7.1k次,点赞21次,收藏19次。C primer plus(第六版) 第七章答案/* 第一题 */#include<stdio.h>#define SPACE ' 'int main(void){ int count_space = 0; int count_line_break = 0; int count_others = 0; int ch; printf("Please pu..._第七章单元测试提交作业6. 单选题(2分)下图中哪个点是最小方差点?( )。a点cb

Ubuntu:显存占用及处理_ubuntu root图形界面占显存-程序员宅基地

文章浏览阅读2.7k次。问题在进行深度学习时,显存是一种非常宝贵的资源。但是即便在Ubuntu下,各种各样的系统配置都会不自觉的占用一些显存,导致深度学习难以为继。在本博客中,主要搬运一些查询显存占用原因及处理方法。翻译来源链接https://unix.stackexchange.com/questions/591393/how-to-shift-process-from-gpu-to-cpu-usagehttps://askubuntu.com/questions/1220144/can-somebody-explai_ubuntu root图形界面占显存

推荐文章

热门文章

相关标签