LINUX.ORG.RU

[Решено] Exception: You are using an unsupported version of Python. Only Python versions 3.7 and above are supported by yt-dlp

 ,


0

1

На Ubuntu 18.04 установлена программа yt-dlp, просто скачан бинарник с гитхаба.

$ ls -l /usr/local/bin/yt-dlp
lrwxrwxrwx 1 root root 18 мая 21  2022 /usr/local/bin/yt-dlp -> /opt/yt-dlp/yt-dlp
$ file /opt/yt-dlp/yt-dlp
/opt/yt-dlp/yt-dlp: a /usr/bin/env python3 script executable (binary data)

После

# yt-dlp -U
Latest version: 2022.11.11, Current version: 2022.05.18
Current Build Hash 5205f3f7881da2e242d15bb258a591c8775633abf37635add89b4a6cf7bfb162
Updating to version 2022.11.11 ...
Updated yt-dlp to version 2022.11.11; Restart yt-dlp to use the new version
стала валится с такой ошибкой
$ yt-dlp --version
Traceback (most recent call last):
  File "/usr/local/bin/yt-dlp/yt_dlp/__init__.py", line 2, in <module>
ModuleNotFoundError: No module named 'contextvars'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/bin/yt-dlp/__main__.py", line 14, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "/usr/local/bin/yt-dlp/yt_dlp/__init__.py", line 5, in <module>
Exception: You are using an unsupported version of Python. Only Python versions 3.7 and above are supported by yt-dlp

$ dpkg -l | grep 'python3.8'
ii  libpython3.8-minimal:amd64                                  3.8.0-3ubuntu1~18.04.2                                      amd64        Minimal subset of the Python language (version 3.8)                                                                              
ii  libpython3.8-stdlib:amd64                                   3.8.0-3ubuntu1~18.04.2                                      amd64        Interactive high-level object-oriented language (standard library, version 3.8)                                                  
ii  python3.8                                                   3.8.0-3ubuntu1~18.04.2                                      amd64        Interactive high-level object-oriented language (version 3.8)                                                                    
ii  python3.8-minimal                                           3.8.0-3ubuntu1~18.04.2                                      amd64        Minimal subset of the Python language (version 3.8)

UPD

rm /usr/local/bin/yt-dlp
Создал файл
$ ls -l /usr/local/bin/yt-dlp 
-rwxrwxrwx 1 root root 53 дек  5 01:00 /usr/local/bin/yt-dlp
такого содержания
#!/bin/bash
/usr/bin/python3.8 /opt/yt-dlp/yt-dlp "$@"
Есть и другие способы:

yt-dlp - fix for perceived python version on Ubuntu 18.04

★★★

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

Ответ на: комментарий от ptah_alexs
$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root       9 авг 31  2019 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root       9 авг 31  2019 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3624880 июл  1 22:56 /usr/bin/python2.7
lrwxrwxrwx 1 root root      33 июл  1 22:56 /usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config
lrwxrwxrwx 1 root root      16 авг 31  2019 /usr/bin/python2-config -> python2.7-config
-rwxr-xr-x 1 root root     385 апр 12  2018 /usr/bin/python2-futurize
-rwxr-xr-x 1 root root     389 апр 12  2018 /usr/bin/python2-pasteurize
lrwxrwxrwx 1 root root       9 окт 25  2018 /usr/bin/python3 -> python3.6
-rwxr-xr-x 2 root root 4530520 июн 29 18:45 /usr/bin/python3.6
lrwxrwxrwx 1 root root      33 июн 29 18:45 /usr/bin/python3.6-config -> x86_64-linux-gnu-python3.6-config
-rwxr-xr-x 2 root root 4530520 июн 29 18:45 /usr/bin/python3.6m
lrwxrwxrwx 1 root root      34 июн 29 18:45 /usr/bin/python3.6m-config -> x86_64-linux-gnu-python3.6m-config
-rwxr-xr-x 1 root root 5183008 дек 10  2021 /usr/bin/python3.8
lrwxrwxrwx 1 root root      16 окт 25  2018 /usr/bin/python3-config -> python3.6-config
lrwxrwxrwx 1 root root      10 окт 25  2018 /usr/bin/python3m -> python3.6m
lrwxrwxrwx 1 root root      17 окт 25  2018 /usr/bin/python3m-config -> python3.6m-config
-rwxr-xr-x 1 root root    1797 июл 12  2017 /usr/bin/python3-unidiff
lrwxrwxrwx 1 root root      16 авг 31  2019 /usr/bin/python-config -> python2.7-config
$ /usr/bin/python3.8 /opt/yt-dlp/yt-dlp --version
2022.11.11
damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

Вот и ответ.

$ /usr/bin/python3.8 /opt/yt-dlp/yt-dlp –version
2022.11.11

Иначе, прописать в /usr/local/bin скрипт с указанием версии питона.

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

команда python –version, что показывает?

Здесь я был не прав, надо было python3 --version проверять. Я по своей системе посмотрел, у меня ссылка, поэтому:

$ python --version
Python 3.10.5


А так то, в скриптах yt-dlp, строка #!/usr/bin/env python3 (_main_.py).

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

лучше способа нет?

А чем плох способ? Пишем скрипт, называем yt-dlp и кидаем в /usr/local/bin. Типа такого:

#! /bin/bash

/usr/bin/python3.8 /opt/yt-dlp/yt-dlp

давно есть yt-dlp_linux

Тоже вариант, все нужные питоновские либы у него внутри. А сам он берется там же, где и yt-dlp. Разница в большем размере.

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