我选择尝试使用cx_freeze,它可以将我简单的Python3.x键盘记录器转换为可执行文件。我选择cx_freeze是因为py2exe只是Python2.x,我正在使用这个setup.py脚本编译我的代码。
from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = [], excludes = [])
base = 'Console'
executables = [
Executable('logger.py', base=base, targetName = 'logger.exe')
]
setup(name='PyLogger',
version = '0.1',
description = 'A Simple Keylogger',
options = dict(build_exe = buildOptions),
executables = executables)当我编译我的代码时,
try:
import pythoncom
except ImportError:
input("Import Error, pywin32 is not installed")
try:
import pyHook
except ImportError:
input("Import Error, pyHook is not installed")我收到导入错误,说pywin32和pyHook都没有安装。如何将外部模块导入到cx_freeze中。
编辑-我尝试更改setup.py以添加includes选项,但没有什么不同。
from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = ['pyHook','pythoncom'],includes = ['pyHook','pythoncom'], excludes = [])
base = 'Console'
executables = [
Executable('logger.py', base=base, targetName = 'logger.exe')
]
setup(name='PyLogger',
version = '0.1',
description = 'A Simple Keylogger',
options = dict(build_exe = buildOptions),
executables = executables)发布于 2014-06-18 05:58:34
找到外部模块的.pyd文件。将其复制并粘贴到构建文件中。因此,例如,如果它正在查找_cpyHook (我遇到了与您相同的问题,它说模块丢失了),请转到C:\Python33LIB\site-packages\pyHook并将文件复制并粘贴到C:\Python33Build\exe.win-amd64-3.3。
发布于 2014-02-28 03:28:51
尝试在构建选项中显式列出缺少的包,如下所示:
buildOptions = dict(packages = ['pyHook', 'pywin32'], excludes = [])如果您需要在构建中包含其他(非this question )文件,请参阅接受的Python答案。
编辑:我终于有时间多看一眼了,这似乎是一个棘手的问题。我会在时间允许的情况下继续研究它,但我想我应该把我的发现发布出来,以防它们对行动有用。我怀疑pyHook模块在‘冻结’时,也就是当它被包含在压缩文件中时,运行得不是很好。如果我使用这个setup.py
from cx_Freeze import setup, Executable
buildOptions = dict(
includes=['pythoncom'],
packages=['pyHook']
)
executables = [
Executable('logger.py', base='Console', targetName = 'logger.exe')
]
setup(
name='PyLogger',
version = '0.1',
description = 'A Simple Keylogger',
options = dict(build_exe = buildOptions),
executables = executables
)生成的logger.exe不能正确运行,并生成以下错误:
Import Error, pyHook is not installed但是,如果我从包含EXE的目录运行以下命令:
unzip library.zip然后重新运行logger.exe,然后一切似乎都很正常。它只是不能从cx_Freeze生成的library.zip文件中加载pyHook。我以前见过这种问题,在加载任何模块之前,我在我的顶级脚本中使用sys.path来解决这个问题。我看看能不能找出一个这样的例子。同时,这个建议可能会对OP有所帮助:尝试解压缩zip文件,看看是否有什么不同。需要注意的几件事:
我导入pywin32没有任何问题,只有pyHook
create_shared_zip=False和include_in_shared_zip=False,但这只是导致了一个名为logger.zip而不是library.zip的文件。(奇怪。真不敢相信这不是个bug。)https://stackoverflow.com/questions/22074774
复制相似问题