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)
Ответ на: комментарий от LightDiver

там есть код для работы с xorg, не требующий root, так же код для winapi
uinput тоже не требует root если права к нему есть (от правил udev зависит) Ты точно именно тот модуль пробовал?

А поиск окон кроссплатформенно ты не сделаешь, всё равно для винды код придётся отдельный писать

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

А поиск окон кроссплатформенно ты не сделаешь, всё равно для винды код придётся отдельный писать

Это не сложно реализовать.
Всё «как обычно».
Создаёте кроссплатформенную функцию, которая в зависимости от ОС использует тот или иной код.

Для Windows у меня вот такой API.
Далее немного ссылок на API Windows.

EnumLangsProc.cpp
EnumNamesProc.cpp
EnumResourcesModule.cpp
EnumTypesProc.cpp
ExtractResource.cpp
GetInfoResource.cpp
LoadResourceMemory.cpp

EnumResLangProc callback function  https://msdn.microsoft.com/en-us/library/windows/desktop/ms648033(v=vs.85).aspx
                                                           An application-defined callback function used with the EnumResourceLanguages and EnumResourceLanguagesEx functions. 
                                                           It receives the type, name, and language of a resource item. 
                                                           The ENUMRESLANGPROC type defines a pointer to this callback function. 
                                                           EnumResLangProc is a placeholder for the application-defined function name.

EnumResNameProc callback function  https://msdn.microsoft.com/en-us/library/windows/desktop/ms648034(v=vs.85).aspx
                                                           An application-defined callback function used with the EnumResourceNames and EnumResourceNamesEx functions. It receives the type and name of a resource. 
                                                           The ENUMRESNAMEPROC type defines a Указатель  к this callback function. 
                                                           

Возникнут проблемы, помогу.

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

https://docs-python.ru/packages/modul-pynput/

Ограничения платформы Linux.

В Linux, модуль pynput использует X-сервер или библиотеку uinput (требует root привилегий). При работе под X-сервером должно выполняться следующее:

Угу, я прочитал про рут и попустил часть про х-сервер. Спасибо, попробую.

Но…. Это нештатный же способ. Модуль надо как то добавлять, а он не добавляется.

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

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

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

Здесь дело не в gentoo. Прости, но у меня, как у гентушника нет слов, чтобы что-нибудь сказать. Ты бездумно копипастишь команды, не понимая, что они делают и не слушаешь объяснения, которые тебе уже несколько человек дали. И несколько раз цитируешь одно и то же сообщение от pip, которое, похоже, не прочитал. Я могу попробовать его перевести, но это всё уже несколько раз тут пересказали.

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

Понимаешь, у меня это все работало почти год. Что я еще могу ответить на это? Что мне все это приснилось, да?

Вот представь. Использую я что то, мне оно пишет: модуля нет. Я гуглю как ставить модуль. Вставляю команду. Мне пип выдает то сообщение. Я делаю как он пишет и все работает с февраля этого года до вчера.

И тут мне внезапно вчера сообщают, что такого не бывает. Как мне на это реагировать?

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

Тебе же несколько раз сказали, что работало потому, что ты использовал те модули, которые есть в системе. Для справки, в gentoo питон активно используется даже если ты ничего дополнительно не ставил. portage написан на python.

В голом чистом stage3 gentoo уже есть вот такой список питоновских сторонних модулей(не считая базовой библиотеки):

ad9d92ead3cb / # pip list
Package              Version
-------------------- ---------
calver               2023.7.23
certifi-system-store 3021.3.16
charset-normalizer   3.1.0
editables            0.3
flit_core            3.9.0
gemato               20.4
hatchling            1.18.0
idna                 3.4
installer            0.7.0
jaraco.context       4.3.0
jaraco.functools     3.8.0
jaraco.text          3.11.1
Jinja2               3.1.2
MarkupSafe           2.1.3
meson                1.1.1
more-itertools       9.1.0
nspektr              0.4.0
ordered-set          4.1.0
packaging            23.1
pathspec             0.11.1
pip                  23.1.2
platformdirs         3.8.0
pluggy               1.2.0
portage              3.0.49
pyparsing            3.1.0
PySocks              1.7.1
requests             2.31.0
setuptools           67.8.0
setuptools-scm       7.1.0
tomli                2.0.1
trove-classifiers    2023.5.24
typing_extensions    4.6.3
urllib3              2.0.3
wheel                0.40.0

Многие пакеты тянут за собой другие. Есть отдельная категория dev-python/*, из которой на системном уровне ставится всякое. О чём тебе pip и сказал.

Ты каждый раз повторял магическое действие по добавлению модулей в venv, но ни разу не использовал venv и тебе просто везло, что нужные модули уже есть в системе.

А тут магия перестала работать, так как на системном уровне этого keyboard не оказалось. Разработчики python(не gentoo и не какого-либо другого дистрибутива) решили попробовать навести порядок в мешанине пакетов и запретили ставить через pip пакеты для всех. О чём тебе и написали английским по чёрному. И предложили решение - используй дистрибутивный пакетный менеджер или ставь пакет внутрь venv. Во втором случае, разумеется (очевидно, логично, не знаю как ещё), работать с установленным в venv модулем можно только из этого venv.

А ты упорно ставишь модуль внутрь venv, а потом пытаешься его использовать вне venv и игнорируешь любые коментарии(как разработчиков python, так и в этой теме от пользователей).

Такова питоновская специфика. Возьми что ли учебник какой полистай по питону из современных. Эта ситуация не вчера появилась.

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

Я гуглю как ставить модуль. Вставляю команду

Между первым и вторым действием надо подумать. Не надо в слепую копипастить первые попавшиеся команды из гугла.

Как мне на это реагировать?

Как всегда в любом вопросе с linux и программированием. Курить маны.

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

Вопрос номер два. Почему модули, которые уже были, писали что их нет до установи в енве? После установки работали.

Ты не понял мля.. Я ставил их только после того как они ругались, что их не существует. Откуда они тогда магическим образом брались?

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

Почему модули, которые уже были, писали что их нет до установи в енве? После установки работали.

Поставил и тут же запустил, не выходя из venv?

Писали, что их нет из-за неправильной копипасты?

Не писали, что их нет, а выдавали какую-либо другую ошибку?

Скрипты таскали часть пакетов с собой и подтягивались с помощью import modulename from localdir?

Марс в Скорпионе наложил кармические поля на фазу Луны иза чего Юпитер ушёл в Деву и пакеты поменяли свою ориентацию относительно оси Вселенной?

Ты такие странный вопросы задаёшь, что я не могу на них ответить. Я(и ещё куча народу в этом треде, а так же разрабы pip в сообщении об ошибке) тебе ответил, как оно работает на самом деле, а что у тебя было до этого - мне неизвестно.

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

Усе по инструкции - поставил, деактивейт и в скрипт проверять. И работало.

Я согласен, что нуб и нихрена не понимаб, но я и хочу понять почему это работало, если не должно было. И что вообще происходит.

Может там скрипт какой то или линк был в реальную систему, я хз.

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

Нет.

ad9d92ead3cb ~ # python -m venv .venv
ad9d92ead3cb ~ # source .venv/bin/activate
(.venv) ad9d92ead3cb ~ # pip install keyboard
Collecting keyboard
  Downloading keyboard-0.13.5-py3-none-any.whl (58 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.1/58.1 kB 649.1 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
[notice] To update, run: pip install --upgrade pip
(.venv) ad9d92ead3cb ~ # python -c 'import keyboard'
(.venv) ad9d92ead3cb ~ # deactivate
ad9d92ead3cb ~ # python -c 'import keyboard'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'keyboard'
shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Конкретно этот и конкретно со вчерашнего времени и не стал работать. Собственно поэтому я и написал. Но все прошлые то работали.

Ладно, я думаю причины гадать уже не стоит, ибо это вангование. Буду теперь копировать модули в каталог скрипта при необходимости.

При компиляции в один бинарник оно надеюсь соберется все вместе правильно.

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

Конкретно этот и конкретно со вчерашнего времени и не стал работать.

Ну конечно же. Кто бы сомневался.

Буду теперь копировать модули в каталог скрипта при необходимости.

И после этого ты говоришь, что хочешь разобраться и понять? venv, requrimenets, документация, переносимость... Не, не слышал. Надеюсь, ты это пилишь исключительно для себя и на своём локалхосте. А то другие за подобное могут и по лицу настучать.

При компиляции в один бинарник оно надеюсь соберется все вместе правильно.

Надежда умирает последней.

Мои полномочия тут всё.

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

У «других» чаще всего все работает.. По крайней мере когда я не косячу в очевидном. Так что все норм. Появится ошибка - разберусь.

Мне в первую очередь надо чтобы работало. Причем работало предсказуемо и везде. Остальное вторично.

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

Ты каждый раз повторял магическое действие по добавлению модулей в venv, но ни разу не использовал venv и тебе просто везло, что нужные модули уже есть в системе.

Я на этом тоже попался. :) Потому что система достаточно старая и те 2.5 модуля которыми постоянно пользуюсь установлены в систему. Потом понадобилось что-то еще и приплыли.)

frunobulax ★★★
()