我用 python 构建了一个键盘记录器,并使用 py2exe(版本 0.13)将 python 文件转换为 exe。它工作得很好,包括所有的包和一切。
我希望我的键盘记录器也能在 mac 上使用,所以我尝试使用 py2app。我关注了 TheBlackBerryChannels tutorial 。它很好地解释了所有内容,但没有显示如何安装从 pip 安装的外部包。因为我使用 from pynput.keyboard import Key, Listener
导入操作系统
导入日期时间
从路径库导入路径
来自 pip 的包。
在完整的 setup.py 文件中,这就是我所拥有的:
from setuptools import setup
APP = ['KeyLoggingMac.py']
OPTIONS = {
# 'iconfile':'logoapp.icns',
'argv_emulation': True,
'packages': ['pynput']
}
setup(
app=APP,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
我做错了什么?它不包含 pynput
包,我认为它会自动包含 os、datetime 和 pathLib
模块,但为什么它不包含 pynput
?
最佳答案
为了简单起见,在主文件中将其导入如下:
from pynput import keyboard
然后在您的设置文件中使用 OPTIONS 中的“includes”,请注意,我还添加了数据文件 test.txt 以将按键写入文件:
from setuptools import setup
APP = ['TEST.py']
DATA_FILES = ['test.txt']
OPTIONS = {'includes': ['pynput']}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
然后从您的 venv 使用终端命令运行 py2app:
python setup.py py2app
您还可以使用 py2applet 生成 setup.py 文件,但我发现它永远无法正常工作。
py2applet --make-setup FILENAME.py
您还需要授予应用程序访问全局键盘事件的权限。这是在“首选项”>“安全和隐私”>“隐私”中完成的
在 Mojave 上,您需要“辅助功能”选项卡,然后在其中添加您的应用程序;在 Catalina 上,您需要“输入监控”。
这对我有用。
关于python - setup.py 和 py2app 包括 pip 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59092009/