Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和Pyinstaller:在代码中包含二进制应用程序_Python_Pyinstaller_Hwid - Fatal编程技术网

Python和Pyinstaller:在代码中包含二进制应用程序

Python和Pyinstaller:在代码中包含二进制应用程序,python,pyinstaller,hwid,Python,Pyinstaller,Hwid,我有一个小应用程序。为了保护,我使用c:/hwid.exe。应用程序返回pc的HWID。示例代码: def HWID_LIC(): try: if hashlib.md5(open('c:\hwid.exe', 'rb').read()).hexdigest() != 'bca173dc': sys.exit(1) out = os.popen("c:\hwid.exe").read().strip() if out

我有一个小应用程序。为了保护,我使用c:/hwid.exe。应用程序返回pc的HWID。示例代码:

def HWID_LIC():
    try:
        if hashlib.md5(open('c:\hwid.exe', 'rb').read()).hexdigest() != 'bca173dc':
            sys.exit(1)
        out = os.popen("c:\hwid.exe").read().strip()
        if out not in lic:
            sys.exit(1)
    except:
        sys.exit(1)

HWID_LIC()

我想在我的应用程序中包含hwid.exe,需要将解决方案全部放在一个文件中。在Python中有可能做到这一点吗?hwid.exe有30 kb。

这是可能的。您需要在sys中搜索hwid.exe。\u

import sys
import os
import hashlib

def HWID_LIC():
    if os.path.isfile('hwid.exe'):
        print('file found in .')
    else:
        print('file not found in .')

    if os.path.isfile(sys._MEIPASS + os.sep + 'hwid.exe'):
        print('file found in sys._MEIPASS')
    else:
        print('file not found')
    print(hashlib.md5(open(sys._MEIPASS + os.sep + 'hwid.exe', 'rb').read()).hexdigest())


if __name__ == '__main__':
    HWID_LIC()
规范文件示例:

# -*- mode: python -*-
a = Analysis(['test.py'],
             pathex=[],
             hiddenimports=[],
             runtime_hooks=None)
import platform
if platform.system().find("Windows")>= 0:
    a.datas = [i for i in a.datas if i[0].find('Include') < 0]
a.binaries = [x for x in a.binaries if not x[0].startswith("scipy")]
a.binaries = [x for x in a.binaries if not x[0].startswith("numpy")]
a.datas += [('hwid.exe','.\\hwid.exe','DATA'),]
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='test.exe',
          debug=False,
          strip=None,
          clean=True,
          upx=False,
          console=True)
执行test.exe时,您会看到:

j:\tmp>test.exe
file not found in .
file found in sys._MEIPASS
754222d71581010a45732c471437ecf7
j:\tmp>test.exe
file not found in .
file found in sys._MEIPASS
754222d71581010a45732c471437ecf7