【问题标题】:Error raised while installing pynput in termux在 termux 中安装 pynput 时出现错误
【发布时间】:2021-11-24 04:18:16
【问题描述】:

我正在尝试在 Termux 中安装 pynput 以便能够运行我的 python 脚本。 当我尝试 [as in the attached screenshot] pip install pynput 时,我收到以下错误消息:

ERROR: Command errored out with exit status 1:
     command: /data/data/com.termux/files/usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/data/data/com.termux/files/usr/tmp/pip-install-f07stt3a/evdev_9d15119a1c774b69be29371e48a8012d/setup.py'"'"'; __file__='"'"'/data/data/com.termux/files/usr/tmp/pip-install-f07stt3a/evdev_9d15119a1c774b69be29371e48a8012d/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /data/data/com.termux/files/usr/tmp/pip-record-u2bumfem/install-record.txt --single-version-externally-managed --compile --install-headers /data/data/com.termux/files/usr/include/python3.9/evdev
         cwd: /data/data/com.termux/files/usr/tmp/pip-install-f07stt3a/evdev_9d15119a1c774b69be29371e48a8012d/
    Complete output (37 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-aarch64-3.9
    creating build/lib.linux-aarch64-3.9/evdev
    copying evdev/__init__.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/device.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/ecodes.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/eventio.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/eventio_async.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/events.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/evtest.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/ff.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/genecodes.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/uinput.py -> build/lib.linux-aarch64-3.9/evdev
    copying evdev/util.py -> build/lib.linux-aarch64-3.9/evdev
    running build_ext
    running build_ecodes
    The 'linux/input.h' and 'linux/input-event-codes.h' include files
    are missing. You will have to install the kernel header files in
    order to continue:

        yum install kernel-headers-$(uname -r)
        apt-get install linux-headers-$(uname -r)
        emerge sys-kernel/linux-headers
        pacman -S kernel-headers

    In case they are installed in a non-standard location, you may use
    the '--evdev-headers' option to specify one or more colon-separated
    paths. For example:

        python setup.py \
          build \
          build_ecodes --evdev-headers path/input.h:path/input-event-codes.h \
          build_ext --include-dirs  path/ \
          install
    ----------------------------------------
ERROR: Command errored out with exit status 1: /data/data/com.termux/files/usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/data/data/com.termux/files/usr/tmp/pip-install-f07stt3a/evdev_9d15119a1c774b69be29371e48a8012d/setup.py'"'"'; __file__='"'"'/data/data/com.termux/files/usr/tmp/pip-install-f07stt3a/evdev_9d15119a1c774b69be29371e48a8012d/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /data/data/com.termux/files/usr/tmp/pip-record-u2bumfem/install-record.txt --single-version-externally-managed --compile --install-headers /data/data/com.termux/files/usr/include/python3.9/evdev Check the logs for full command output.

我不知道下一步该做什么。 请帮忙。

【问题讨论】:

  • 错误消息显示“您必须安装内核头文件才能继续”。所以这就是你接下来应该做的。
  • 谢谢,但是我应该写什么命令来安装头文件。
  • 我引用的句子正下方的错误消息中建议的命令之一怎么样?
  • @mkrieger 你能写出安装这些头文件的确切命令吗?

标签: python-3.x linux command-line pynput termux


【解决方案1】:

由于 Termux 没有 evdev 所需的 kernel header 文件,您会收到错误消息。没有它就不可能安装 pynput 和其他需要 evdev 的模块。 关于您关于安装它的命令的问题,错误消息已经包含它:

    yum install kernel-headers-$(uname -r)
    apt-get install linux-headers-$(uname -r)
    emerge sys-kernel/linux-headers
    pacman -S kernel-headers

但不要尝试

我并不是说会发生不好的事情。它只是行不通。 Termux 的存储库中没有内核头文件,据我所知,在没有风险的情况下安装它们的唯一选择是使用 proot。所以你需要这样做:

apt update # Update package repositor(y|ies)
apt upgrade # Upgrade everything just in case
apt install proot # Install **proot**
apt install proot-distro # [OPTIONAL] Install official (made by Termux's developer) proot installer

如果您安装了 proot-distro,请执行以下操作: proot-distro list # List current available distros 那么

  1. 安装你想要的发行版
  2. 开始吧
  3. 使用该发行版的安装命令再次安装 python(以及您需要的),因为 proot 就像虚拟机一样
  4. 安装内核头文件。 根据您的原始发行版选择命令
  5. 运行pip install pynput

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多