python - setup.py 和 py2app 包括 pip 包

标签 python python-3.x py2app

我用 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/

相关文章:

Python imaplib : Display non-ASCII characters correctly

app-store - 如何将py2app创建的程序提交到Mac应用商店?

python - 调试 : Shuffle deck of cards in Python/random

没有重复的Python random.choice方法?

python - 如何从 python 列表中添加奇数?

osx-lion - py2app 在早期版本的 OS X 上因 PIL 错误而崩溃

python - 在 Mac 上不使用 Python 的系统安装,使用 py2app 创建独立应用程序?

python - Tarfile 创建 xz 文件

python - 在docker-py中使用管道

python - 使用 Python API 将图片上传到 facebook