LINUX.ORG.RU

python telegram bot , debian 12

 ,


0

2

пытаюсь поднять бота.
поставил python3-python-telegram-bot из bookworm же репозитария.
сказал пример из гитхаба этого бота.
вставил токен

пробую запустить - не работает

ImportError: cannot import name 'Application' from 'telegram.ext' (/usr/lib/python3/dist-packages/telegram/ext/__init__.py)

помогите ?

Если бот с гитхаба, а зависимость из Debian - скорее всего, она старше бота лет этак на 5.

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

В случае Python, это virtualenv, которая может создаваться несколькими инструментами (скорее всего, в README бота написано, какой используется именно им).

Пакетировать зависимости в дистрибутив - это уже какой-то бесполезный сизифов труд в большинстве случаев.

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

Это не то. virtualenv входит в состав самого python уже чёрт знает сколько лет.

Если что-то отдельное из дистрибутива - оно 100% старое, к г-но мамонта, и явно не то.

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

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

С трудом нашёл GitHub этого проекта.

Понял, что README рассчитан на человека, который разбирается в Python на уровне хорошего джуна, а то и мидла.

Документации для юзеров в этом проекте нет, надо реально погружаться в хотя бы самые основы Python, чтобы эту штуку установить и освоить (и да, за рекомендацию там: «устанавливайте командой pip install telegram-hue-moe», я бы её автора линейкой по рукам бил.

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

То есть по факту пакет в дебиане неюзабельный? А точнее устаревший?

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

Установленный через pip отлично работает, к слову.

calculate diver # /python/bin/pip show python-telegram-bot
Name: python-telegram-bot
Version: 22.0
Summary: We have made you a wrapper you can't refuse
Home-page: https://python-telegram-bot.org
Author: 
Author-email: Leandro Toledo <devs@python-telegram-bot.org>
License-Expression: LGPL-3.0-only
Location: /python/lib/python3.12/site-packages
Requires: httpx
Required-by: 
calculate diver # 

15я версия это 2021 год!

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

Установленный через pip отлично работает, к слову.

Через pip можно устанавливать только в virtualenv. Иначе будет бардак в системе, порой практически нераспутываемый даже при наличии всех навыков.

Потому я и говорю, что автора надо линейкой по рукам бить, чтобы новичкам сразу показывал хотя бы, что надо использовать virtualenv или pipx или uv.

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

Само собой. У меня же видно где установлено: /python/bin/pip

В генту ты не сможешь установить не в env. Система просто не позволит:

calculate diver # pip install python-telegram-bot
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 # 

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

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

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

А пока это не нужно, то разработка и использование скриптов на питоне обычно выглядит так:

mkdir telegram-bot
cd telegram-bot
python3 -m venv .venv # создаст виртуальное окружение в папке .venv
.venv/bin/python3 -m pip install python-telegram-bot
.venv/bin/python3 <твой-скрипт-пример.py>
masa ★★
()
Ответ на: комментарий от bloodmeri

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

Создаётся отдельное изолированное окружение, с отдельным python (через pyenv, mise или uv), с отдельным изолированным набором библиотек.

Начинать с установки зависимостей в дистрибутив, в любом дистрибутиве, это не сработает, или сработает криво, и ещё очень трудоёмко. Да и зависимостей сейчас десятки и сотни у каждого пакета - ни один дистрибутив даже автоматически всё это не опакетит, тем более, что они очень быстро начнут конфликтовать по версиям.

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

Калька ставится минуты за 3, совместима с генту на 100%. 99,9% пакетов доступны бинарно. Плюс к этому все удобства генты дополнительные.

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

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

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

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

Когда делаешь что-то на питоне, то основная болевая точка - организация среды для разработки и окружения для запуска готового кода.

Надо сразу построить себе в голове картину, что питоновские пакеты в дистрибутиве - они для других пакетов из дистрибутива, не для тебя. Сразу используй менеджер пакетов/проектов uv и работай из под обычного пользователя, при любых попытках начать использовать питон на практике сегодня надо начинать с его освоения. Альтернативные пути ведут к тому же uv, только через кучу жопоболи, проще сразу потратить полчасика на него.

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

сразу сложно распедалится uv не имея предварительно представления о «аде зависимостей» разноверсионости что python3 что самих пакетов

во времена оные уже «зная» python не стал(не смог!) (после idle и просто редакторов(gedit) какой нить nano) пользоваться pycharm ибо оно же для «профессионалов» и спразу требует выбрать в каком ты venv

т.е. uv - крутая вещь не вполне очевидная без знания истории (в части что изначально в python не было виртуальных окружений :) )

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

т.е. uv - крутая вещь не вполне очевидная без знания истории (в части что изначально в python не было виртуальных окружений :) )

Как по мне, то сегодня даже первое знакомство с языком надо начинать с создания проекта через сопутствующий этому языку менеджер. Это до 30 минут доп. нагрузки в начале и куча сэкономленных часов времени чуть позже. Хэллоу ворлд уже запустить из под него.

Особенно это относится к питону, где разобраться с uv проще и быстрее, чем разобраться в необходимости использовать именно его. Сразу же встает потребность в пипе и венве и проще сразу же начать делать это через uv pip и uv venv.

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

в идеале то что uv pip & uv venv поглощены(будут) в uv и останутся как команды менеджера это правильный путь из болота версионости по факту - ибо в болото успели забрести

ща ретроспективно venv с 3.3 ; pip с 3.4

т.е эти сущности(хоть им по больше 10) появились когда python уже 23-25 существовал

т.е uv это лучший на данный момент менеджер сопутствующий уменьшению проблем при разработке

к питону это относится ибо ад версий не решили раньше

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

к питону это относится ибо ад версий не решили раньше

Потому что раньше это было расточительно и не нужно. Я где-то до середины 2010-х не пиннил зависимости, потому что этого не было нужно. Они менялись раз в несколько месяцев, и что-либо ломалось из-за обновления исключительно редко. Да и зависимостей было меньше.

Понятно, что языки, которые взлетели уже сильно позже, с нуля были адаптированы к новым условиям (частые релизы всего на свете, куча зависимостей). В 1990-х, начале 2000-х, это сочли бы напрасным расточительством, да и понимание, как сделать правильно, мало у кого было.

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

а , проехали ...
эхо бот работал , успех достигнут , мотивация пропала.

теперь буду ковырять telegram-deepseek-bot

https://github.com/yincongcyincong/telegram-deepseek-bot

спасибо всем за помощь - научился пользоваться виртуальной средой в питоне , день прошёл не зря

bloodmeri
() автор топика