LINUX.ORG.RU

Качать с YouTube - AttributeError: module yt_dlp.dependencies.Cryptodome.Cipher has no attribute AES

 


0

1

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

$ file /opt/yt-dlp/yt-dlp
/opt/yt-dlp/yt-dlp: a /usr/bin/env python3 script executable (binary data)
И создан такой файл, чтобы удобнее запускать
$ file /usr/local/bin/yt-dlp
/usr/local/bin/yt-dlp: Bourne-Again shell script, ASCII text executable
$ ls -l /usr/local/bin/yt-dlp
-rwxrwxrwx 1 root root 55 дек  5 01:33 /usr/local/bin/yt-dlp
$ cat /usr/local/bin/yt-dlp
#!/bin/bash
/usr/bin/python3.8 /opt/yt-dlp/yt-dlp "$@"
После
$ yt-dlp -U
Latest version: 2023.02.17, Current version: 2023.01.06
Current Build Hash 446d77c224738bb5bc8e8711014b5df3ca096997eaeeb61f7d8c10c425658255
Updating to version 2023.02.17 ...
Updated yt-dlp to version 2023.02.17
стала валится с ошибкой
$ yt-dlp --version
Traceback (most recent call last):
  File "/opt/yt-dlp/yt-dlp/yt_dlp/compat/compat_utils.py", line 36, in __getattribute__
  File "/opt/yt-dlp/yt-dlp/yt_dlp/compat/compat_utils.py", line 56, in __getattr__
AttributeError: module yt_dlp.dependencies.Cryptodome.Cipher has no attribute AES

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 192, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/opt/yt-dlp/yt-dlp/__main__.py", line 14, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/opt/yt-dlp/yt-dlp/yt_dlp/__init__.py", line 18, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/opt/yt-dlp/yt-dlp/yt_dlp/cookies.py", line 18, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/opt/yt-dlp/yt-dlp/yt_dlp/aes.py", line 5, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/opt/yt-dlp/yt-dlp/yt_dlp/dependencies/__init__.py", line 76, in <module>
  File "/opt/yt-dlp/yt-dlp/yt_dlp/compat/compat_utils.py", line 43, in __getattribute__
  File "/opt/yt-dlp/yt-dlp/yt_dlp/compat/compat_utils.py", line 56, in __getattr__
AttributeError: module yt_dlp.dependencies.Cryptodome.Cipher has no attribute AES
cast hikikomori burato

★★★

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

наверное опять питон outdated. Как на рутрекере все пытаются поставить крякнутый crossover 20 версии, а он не ставиться ибо в 3.11 питоне модуль переименовали

Можно поинтересоваться почему 18 убунта когда уже скоро 23 выходит? Неужели не интересно что появляется нового?

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

Я читал этот багрепорт. А чего нажать-то надо в моём случае? Там что-то непонятное.

monkdt, burato, python 3.8 же поддерживается, это самый новый из официально доступных. У кого он новее, у вас этот баг не воспроизводится?

Можно поинтересоваться почему 18 убунта когда уже скоро 23 выходит? Неужели не интересно что появляется нового?

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

damix9 ★★★
() автор топика
Последнее исправление: damix9 (всего исправлений: 1)
Ответ на: комментарий от krasnh
$ python3.8 -m pip install cffi
  ...                                                                                                                                                                                                                                   
  creating build/temp.linux-x86_64-3.8/c                                                                                                                                                                                                                                       
  x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DFFI_BUILDING=1 -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/python3.8 -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.8/c/_cffi_backend.o                                                                                                                          
  c/_cffi_backend.c:2:10: fatal error: Python.h: Нет такого файла или каталога                                                                                                                                                                                                 
   #include <Python.h>                                                                                                                                                                                                                                                         
            ^~~~~~~~~~                                                                                                                                                                                                                                                         
  compilation terminated.                                                                                                                                                                                                                                                      
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                               
  ----------------------------------------                                                                                                                                                                                                                                     
  Failed building wheel for cffi                                                                                                                                                                                                                                               
  Running setup.py clean for cffi                                                                                                                                                                                                                                              
Failed to build cffi                                                                                                                                                                                                                                                           
Installing collected packages: pycparser, cffi                                                                                                                                                                                                                                 
  Running setup.py install for cffi ... error                                                                                                                                                                                                                                  
    Complete output from command /usr/bin/python3.8 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-aajekjzz/cffi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-f0way085-record/install-record.txt --single-version-externally-managed --compile --user --prefix=:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.8
    creating build/lib.linux-x86_64-3.8/cffi
    copying cffi/verifier.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/cparser.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/pkgconfig.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/model.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/__init__.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/commontypes.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/lock.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/api.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/error.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/recompiler.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/_embedding.h -> build/lib.linux-x86_64-3.8/cffi
    copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-3.8/cffi
    running build_ext
    building '_cffi_backend' extension
    creating build/temp.linux-x86_64-3.8
    creating build/temp.linux-x86_64-3.8/c
    x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DFFI_BUILDING=1 -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/python3.8 -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.8/c/_cffi_backend.o
    c/_cffi_backend.c:2:10: fatal error: Python.h: Нет такого файла или каталога
     #include <Python.h>
              ^~~~~~~~~~
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    
    ----------------------------------------
Command "/usr/bin/python3.8 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-aajekjzz/cffi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-f0way085-record/install-record.txt --single-version-externally-managed --compile --user --prefix=" failed with error code 1 in /tmp/pip-build-aajekjzz/cffi/
damix9 ★★★
() автор топика
Ответ на: комментарий от koxoho4192

Сделал так

python3.8 -m pip install yt-dlp --user
python3.8 -m pip uninstall yt-dlp
теперь
$ yt-dlp --version
2023.02.17
$ python3.8 -m pip list --user
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
Brotli (1.0.9)
certifi (2022.12.7)
mutagen (1.46.0)
pycparser (2.21)
pycryptodomex (3.17)
websockets (10.4)
Спасибо!

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

pycryptodomex (3.17)

От разраба:

«Правильное» решение состоит в том, чтобы пользователи заменили pycryptoс более новым pycryptodomex. …. Я заставлю yt-dlp обнаруживать эту проблему и вместо этого игнорировать пакет.

Похоже установка в новую директорию (юзера), подтянула нужные зависимости.

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

Так же, для тех, кто еще не знает, но не хочет возиться с версиями питона, или вообще не хочет видеть его в своей системе. :)
Существуют самодостаточные пакеты yt-dlp, скомпилированные с питоном. Скачать yt-dlp_linux, положить в рабочую директорию и переименовать в yt-dlp, чтобы приложения видели его.

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

Смотри, ставишь python3-virtualenv в систему. Потом делаешь virtualenv /path/to/users/applications/virtualenv. Он создаст каталог virtualenv и поставит туда актуальный python, pip и так далее. Пользоваться: source /path/virtualenv/bin/activate после чего можешь ставить pip'ом, обновлять и использовать актуальный yt-dlp. Попользовался, сделай deactivate - выйдешь из виртуального окружения в свое.

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

Хорошие новости! Получается, это исправили в версии 2023.03.03. А уже и следующая вышла.

$ yt-dlp -U
Available version: stable@2023.03.04, Current version: stable@2023.03.04                                                                                                                                                                     
Current Build Hash: 91cad9f121c1f6f0a81b747415c46ecba0ff331ed38cc6433040b4ac7b6e15ca                                                                                                                                                         
yt-dlp is up to date (stable@2023.03.04)
$ yt-dlp --version                                                                                                                                                                                              
2023.03.04
damix9 ★★★
() автор топика