pyinstaller打包后,在别的机子运行出错?

求大大帮忙

python3.64版本

rabird.winio ←地址

简单的官方模块示例,本机打包运行没问题,

在其他机子就报错
图片说明

示例代码:

import rabird.winio

import time

import atexit



# KeyBoard Commands

# Command port

KBC_KEY_CMD = 0x64

# Data port

KBC_KEY_DATA = 0x60



__winio = None



def __get_winio():

    global __winio



    if __winio is None:

            __winio = rabird.winio.WinIO()

            def __clear_winio():

                    global __winio

                    __winio = None

            atexit.register(__clear_winio)



    return __winio



def wait_for_buffer_empty():

    '''

    Wait keyboard buffer empty

    '''



    winio = __get_winio()



    dwRegVal = 0x02

    while (dwRegVal & 0x02):

            dwRegVal = winio.get_port_byte(KBC_KEY_CMD)



def key_down(scancode):

    winio = __get_winio()



    wait_for_buffer_empty()

    winio.set_port_byte(KBC_KEY_CMD, 0xd2)

    wait_for_buffer_empty()

    winio.set_port_byte(KBC_KEY_DATA, scancode)



def key_up(scancode):

    winio = __get_winio()



    wait_for_buffer_empty()

    winio.set_port_byte( KBC_KEY_CMD, 0xd2)

    wait_for_buffer_empty()

    winio.set_port_byte( KBC_KEY_DATA, scancode | 0x80)



def key_press(scancode, press_time = 0.2):

    key_down( scancode )

    time.sleep( press_time )

    key_up( scancode )





# Press 'A' key

Scancodes references : Keyboard scancodes

key_press(0x1E) 

1个回答

老哥,出错原因虽然未知,但是有一种方法可以避免此类因环境部署产生的不一致问题 --** 容器技术**, 这是一种及其适合软件开发,部署,运维的技术。

你可以使用一个python容器,在其中完成你的项目,然后打包此容器为新的容器镜像。
只要是可以运行容器的主机,你打包前OK, 在任何机器上都OK,这种问题根本不会出现,也就无需调试找原因了。

目前很受欢迎的容器之一**docker**,官网地址是https://www.docker.com/

如果选择使用容器,有什么问题,可以再讨论

xx76043885
xx76043885 看不懂,还是算了。不过还是谢谢
大约 2 年之前 回复
ZhihengTao
ZhihengTao 回复xx76043885: 那就很尴尬了,而且win上面的容器技术不成熟。出错的原因可能是privilege或者driver要求没满足,你看一下它git项目说明检查一下https://github.com/starofrainnight/rabird.winio
大约 2 年之前 回复
xx76043885
xx76043885 每一台都要安装容器吗?那样不行呀,给朋友使用的
大约 2 年之前 回复
xx76043885
xx76043885 回复ZhihengTao: 那就是每一台都要安装容器
大约 2 年之前 回复
ZhihengTao
ZhihengTao 回复xx76043885: 实际用起来非常方便,以常用的docker为例: 1. 安装; 2. 运行你的基础容器docker run ...; 3. 在容器内部署你的项目;4. 打包修改后的容器docker commit ...; 5. 在任何支持容器的主机上运行打包后的镜像; 6. 搞定了2333. PS: 说了这么多步骤,关键就一句:运行容器后,使用起来和主机/虚拟机没有区别,做好部署后记得commit就OK
大约 2 年之前 回复
xx76043885
xx76043885 刚刚稍微看了这容器的介绍,好像挺复杂的?实际用起来方便吗?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问