LINUX.ORG.RU

Модуль keyboard в питон, где же он?

 , , ,


0

1

Калька, она же гента.

(venv) calculate diver # python -m pip show keyboard
Name: keyboard
Version: 0.13.5
Summary: Hook and simulate keyboard events on Windows and Linux
Home-page: https://github.com/boppreh/keyboard
Author: BoppreH
Author-email: boppreh@gmail.com
License: MIT
Location: /path/to/venv/lib/python3.11/site-packages
Requires: 
Required-by: 
(venv) calculate diver # 

Установил модуль keyboard, прописал в скрипте import keyboard. Иии.. Его нет:

diver ~/Скрипты % python l22.py                                                         [1] 0:08:11
Traceback (most recent call last):
  File "/home/diver/Скрипты/l22.py", line 7, in <module>
    import keyboard
ModuleNotFoundError: No module named 'keyboard'

Это он чего?

★★★★★

Последнее исправление: LightDiver (всего исправлений: 2)

Ответ на: комментарий от mittorn

На гитхабе написано: Python 2 and 3.

У меня dev-lang/python-3.11.4

calculate diver # pip3 install keyboard
error: externally-managed-environment

× This environment is externally managed
╰─> 
    The system-wide Python installation in Gentoo should be maintained
    using the system package manager (e.g. emerge).
    
    If the package in question is not packaged for Gentoo, please
    consider installing it inside a virtual environment, e.g.:
    
    python -m venv /path/to/venv
    . /path/to/venv/bin/activate
    pip install mypackage
    
    To exit the virtual environment, run:
    
    deactivate
    
    The virtual environment is not deleted, and can be re-entered by
    re-sourcing the activate file.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
calculate diver # python -m venv /path/to/venv
calculate diver # . /path/to/venv/bin/activate
(venv) calculate diver # pip3 install keyboard
Collecting keyboard
  Downloading keyboard-0.13.5-py3-none-any.whl (58 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.1/58.1 kB 352.2 kB/s eta 0:00:00
Installing collected packages: keyboard
Successfully installed keyboard-0.13.5

[notice] A new release of pip is available: 23.1.2 -> 23.2.1

Это штатная установка модулей в генте. Остальные же модули так установились и работают.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от mittorn

Как раз в генте он работает и работал весь прошлый год.

diver@calculate ~ $ pip3 install --user diver keyboard
error: externally-managed-environment

× This environment is externally managed
╰─> 
    The system-wide Python installation in Gentoo should be maintained
    using the system package manager (e.g. emerge).
    
    If the package in question is not packaged for Gentoo, please
    consider installing it inside a virtual environment, e.g.:
    
    python -m venv /path/to/venv
    . /path/to/venv/bin/activate
    pip install mypackage
    
    To exit the virtual environment, run:
    
    deactivate
    
    The virtual environment is not deleted, and can be re-entered by
    re-sourcing the activate file.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Вот что от юзера.

У меня там установлен уже десяток модулей и только с этим возникли проблемы.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Про pip3 install --user с этого года следует забыть: https://peps.python.org/pep-0668/

Если хватает системных пакетов, то не пользуешься pip вообще. Если пользуешься pip, то ставишь пакеты и запускаешь скрипты только из venv. На самом деле все довольно логично.

Zeta_Gundam
()
Ответ на: комментарий от Zeta_Gundam

Хорошо, как мне установить модуль keyboard?

Ноты же понимаешь, что остальные модули установленные оттуда работают везде в системе?

import time
import os.path
import subprocess
import shlex
import random
import datetime
#import keyboard
from sys import argv

Вот, например, у меня используется в скрипте.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 2)
Ответ на: комментарий от LightDiver

Установлено у тебя все правильно, просто нужно, чтобы и скрипты запускались внутри venv. Т.е. либо перед запуском скрипта активировать venv руками, либо сделать симлинк в ~/.local/bin на питон из виртуального окружения (~/path/to/venv/bin/python).

Zeta_Gundam
()
Ответ на: комментарий от Zeta_Gundam

Еще раз - скрипты видят снаружи модули, установленные внутри.

import time
import os.path
import subprocess
import shlex
import random
import datetime
#import keyboard
from sys import argv

Вот список, которые я устаналивал и они видны. Проблема только с тем, что закомментирован.

ТАК. Стоп. Сегодня четверг, значит в понедельник была обнова. Возможно просто требуется перезагрузка.. Я попробую.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от grem
diver@calculate ~ $ pip3 install --user keyboard
error: externally-managed-environment

× This environment is externally managed
╰─> 
    The system-wide Python installation in Gentoo should be maintained
    using the system package manager (e.g. emerge).
    
    If the package in question is not packaged for Gentoo, please
    consider installing it inside a virtual environment, e.g.:
    
    python -m venv /path/to/venv
    . /path/to/venv/bin/activate
    pip install mypackage
    
    To exit the virtual environment, run:
    
    deactivate
    
    The virtual environment is not deleted, and can be re-entered by
    re-sourcing the activate file.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
diver@calculate ~ $ 
LightDiver ★★★★★
() автор топика
Ответ на: комментарий от grem

Хз чего это фича, я год периодически использую питон и именно так ставлю модули. Это первая ошибка.. Сейчас ребутнусь и возможно починится. Опять небось обнова все сломала.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от frunobulax

Тут похоже какие то изменения в оси.. Еселект говорит, что питона вообще нет в системе. Обновлюсь попробу, там как раз обнова на пип-ран идет.. Посмотрим.

Гентушников бы послушать по этому поводу. Чую это всетаки особенности местные.

 * Facilities for environment variables (N) dev-python/jaraco-env-1.0.0 (39 KiB)
 * Install packages and run Python with them (U) dev-python/pip-run-12.1.0 (69 KiB)
 * Backported and Experimental Type Hints for Python 3.7+ (U) dev-python/typing-extensions-4.7.1 (99 KiB)

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 2)
Ответ на: комментарий от LightDiver

Мне вот эта замута с venv прилетела с обновой питона 100%.

Вот ссыль.

В общем придется разобраться с venv, там не сложно на самом деле)

создать новое окружение:

python -m venv /path/to/new/virtual/environment

активировать окружение (баш):

source <venv>/bin/activate

В этом терминале ставишь как обычно пакеты pip install, pip3 install. Чтобы каждый раз не проваливаться в венв сделай как выше написал, у меня работает, не думаю что от системы будет зависеть.

Тут про венв подробнее.

frunobulax ★★
()
Ответ на: комментарий от frunobulax

Ну ты экстремист. Мне кажется, для разовой работы все же проще активировать venv. Если у тебя это часть ежедневного воркфлоу, то стоит не полениться и завернуть скрипт в модуль (может сделать pip install -e, если код продолжает писаться), тогда в ~/.local/bin можно будет поставить симлинки сразу на исполняемые файлы (из venv/bin) с автоматически прописанными шебангами.

Zeta_Gundam
()
Ответ на: комментарий от frunobulax

У меня это минимум с февраля, когда я начал программировать собственно. Я как то и привык в venv ставить модули тут. Сейчас обновлю ось и если не заработает, попробую, спасибо.

Аххахаха.. Оно перестало вообще в принципе модули ставить. Теперь ни один не устанавливается новый. Только старые давно установленные работают.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от Zeta_Gundam

Попробую с локальным бином)

Ежедневный воркфлоу, но иногда что-то ломается или по-мелочи меняю, с модулями не хотелось долбиться. Говорю - на истину не претендую, у меня всякие раскривушки чисто для себя)

frunobulax ★★
()
Ответ на: комментарий от frunobulax

Аххахахаах)) Я тут наконец прочитал условия использования этого говна. Я ничего не упустил - в линуксе оно требует запуска скрипта от рута?! Серьезно? Это вообще как и зачем?

ImportError: You must be root to use this library on linux.

Знаете, ну его нахер. С модулями я разберусь конечно, но проще сделать так:

subprocess.call(shlex.split("xte 'keydown 2'"))
LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от Zeta_Gundam

pip я много лет не пользуюсь, потому этого цирка не видел. Ну впрочем это лишь означает что про pip можно забыть. Как я понимаю, опция --break-system-packages в комбинации с --user ничего не ломает (кроме .local пользователя, который можно смело почистить после обновления)
venv же сломанное г-но, у меня он банально разваливался на x32 и ещё буквально несколько лет назад разваливался на aarch64 (вроде уже починили). Может конечно сейчас у него нет тех проблем, но осадочек остался. То что он работает на x86_64, мне не сильно интересно, такие штуки должны или везде работать одинаково, или не должны существовать

mittorn ★★★★★
()
Ответ на: комментарий от LightDiver

Либо через portage, либо кидаю прямо в каталог собираемого/запускаемого пакета, собирая всё вручную. Если зависимостей столько, что ставить вручную слишком долго, а в portage их нет значит пакет не стоит того, чтобы тратить на него время. Полезные штуки бы запакетировали в portage, а от dependency hell стоит держаться подальше

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от mittorn

А допустим с окнами и клавиатурой мышью штатно в питоне как то можно работать, ты не в курсе? Мне чисто любопытства ради, я то делаю это сейчас через баш-скрипты.

Тот модуль выше это херня какая то и издевательство и реально использовать нельзя по сути.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

А что именно можно сделать? Так то в питоне есть ctypes и можно делать почти что угодно. В универе я как-то упоролся и лабу написал дёргая winapi прямо из питона (создал окно и нарисовал на нём графики сырыми winapi функциями)
Слать события проще всего дёргая какой-нибудь xdotool через system,если конечно устроит такой примитивный вариант, либо через uevent, для такого есть много примеров. А вот слушать события чуть сложнее - тут либо напрямую evdev от рута, либо пытаться как-то в x11/wayland лезть

mittorn ★★★★★
()
Ответ на: комментарий от LightDiver

To avoid depending on X, the Linux parts reads raw device files (/dev/input/input*) but this requires root

Возможно тебе как раз слушать надо события клавиатуры, но система не даст тебе это просто так делать не от рута, а делать это средствами x11 из питона сложно, wayland скорее всего вообще не даст

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

Ну смотри, нужно прочитать список окон, вычислить два нужных, переключаться между ними и отсылать им определенные нажатия, отжатия кнопок и мыши.

Xdotool для этого не подходит, например, он не умеет кейдаун, кейап. Да и если это не учитывать - это всетаки стороннее. Да, до вчера я его и использовал, кстати. Мне интересны именно штатные инструменты - чтобы убрать баш скрипты для начала из кода.

Во-вторых интересна кроссплатформенность ради спортивного интереса, чтобы при желании перенести скрипт на ту же винду и он заработал.

Причем без рута.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

например, он не умеет кейдаун, кейап.

mittorn@mittorn-zen ~ $ xdotool
Usage: xdotool <cmd> <args>
Available commands:
  getactivewindow
  getwindowfocus
  getwindowname
  getwindowclassname
...
  getmouselocation
  key
  keydown
  keyup
  mousedown
...
mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)