Python youtube_dl DownloadError: ERROR: ffprobe или avprobe не найден. Пожалуйста, установите один [дубликат]

Несмотря на то, что принятый anwer присутствует, я хотел бы добавить немного описания.

Давайте сделаем небольшое упражнение

, прежде всего определим класс следующим образом:

class A:
temp='Skyharbor'

def __init__(self, x):
    self.x=x
def change(self, y):
    self.temp=y

Итак, что мы имеем здесь?

  • У нас есть очень простой класс, который имеет атрибут temp, который является строкой
  • An init, который устанавливает self.x
  • . Метод изменения устанавливает self.temp

Довольно прямо вперед до сих пор? Теперь давайте начнем играть с этим классом. Давайте сначала инициализируем этот класс:

a = A('Tesseract')

Теперь сделайте следующее:

>>> print a.temp
Skyharbor
>>> print A.temp
Skyharbor

Ну, a.temp работал так, как ожидалось, но как, черт возьми, A.temp работал? Ну, это сработало, потому что temp - это атрибут класса. Все в python - это объект. Здесь A также является объектом класса type. Таким образом, temp атрибута является атрибутом, принадлежащим классу A, и если вы измените значение temp через A (а не через экземпляр a), измененное значение будет отражено во всем экземпляре класса A. Давайте продолжим и сделаем это:

>>> A.temp = 'Monuments'
>>> print A.temp
Monuments
>>> print a.temp
Monuments

Интересно, не так ли? И обратите внимание, что id (a.temp) и id (A.temp) все те же

Любой объект Python автоматически получает атрибут dict, который содержит его список атрибутов. Давайте рассмотрим, что этот словарь содержит для наших объектов-объектов:

>>> print A.__dict__
{
    'change': <function change at 0x7f5e26fee6e0>,
    '__module__': '__main__',
    '__init__': <function __init__ at 0x7f5e26fee668>,
    'temp': 'Monuments',
    '__doc__': None
}
>>> print a.__dict__
{x: 'Tesseract'}

Обратите внимание, что атрибут temp указан среди атрибутов класса A, тогда как x указан для экземпляра

Итак, что мы получаем определенное значение a.temp, если оно даже не указано для экземпляра a. Ну, это волшебство метода __getattribute__(). В Python точечный синтаксис автоматически вызывает этот метод, поэтому, когда мы пишем a.temp, Python выполняет a.getattribute ('temp'). Этот метод выполняет действие поиска атрибута, то есть находит значение атрибута, просматривая в разных местах.

Стандартная реализация __getattribute__() сначала ищет внутренний словарь (dict) объекта, а затем тип самого объекта. В этом случае a.__getattribute__('temp') выполняет сначала a.__dict__['temp'], а затем a.__class__.__dict__['temp']

Теперь давайте воспользуемся нашим методом change:

>>> a.change('Intervals')
>>> print a.temp
Intervals
>>> print A.temp
Monuments

Ну, теперь, когда мы использовали себя , print a.temp дает другое значение из print A.temp.

Теперь, если мы сравним id (a.temp) и id (A.temp), они будут разными

19
задан Anass El Fakir 11 June 2015 в 01:37
поделиться

8 ответов

В Windows вы можете легко установить ffmpeg через chocolatey

choco install ffmpeg

-1
ответ дан Alamakanambra 27 August 2018 в 21:06
поделиться

brew install ffmpeg установит то, что вам нужно, и все зависимости, если вы находитесь на Mac.

5
ответ дан applecrusher 27 August 2018 в 21:06
поделиться

Вы можете установить их на

sudo apt-get install -y libav-tools
6
ответ дан Ganesh Krishnan 27 August 2018 в 21:06
поделиться

Я знаю, что пользователь спросил об этом для Linux, но у меня была эта проблема в Windows (10 64 бит), и я нашел мало информации, поэтому я решил это:

  • Загрузить LIBAV , я использовал libav-11.3-win64.7z. Просто скопируйте «avprobe.exe» и все DLL-файлы из «/ win64 / usr / bin» в «youtube-dl.exe».

Если LIBAV не помогает, попробуйте FFMPEG , копируя содержимое папки «bin», где находится «youtube-dl.exe». Это не помогло мне, но другие сказали, что это так, поэтому стоит попробовать.

Надеюсь, это поможет кому-то, имеющему проблему в Windows.

22
ответ дан Kurtoid 27 August 2018 в 21:06
поделиться
  1. обновить версию youtube-dl до последней, поскольку более старая версия может не поддерживать палилистов. sudo youtube-dl -U, если u установлен через .deb sudo pip install --upgrade youtube_dl via pip
  2. использовать это, чтобы загрузить плейлист в виде mp3-файла youtube-dl --extract-audio --audio- формат mp3 #url_to_playlist
0
ответ дан Mbugua 27 August 2018 в 21:06
поделиться

Что работало для меня (youtube-dl version 2018.03.03, ffprobe 0.5, avvbe, 3.4.1-tessus, в Hi-Sierra / iMac):

brew install libav

(благодаря записи marciovsena на GitHub ).

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

11
ответ дан Stephen Kennedy 27 August 2018 в 21:06
поделиться

Существует некоторая путаница для установленных пользователями POP для Windows. В инструкциях рассказывается о конкретной папке с именем «youtube-dl.exe». Нет такой папки, если вы будете устанавливать ее. Решение:

  • Загрузите одну из сборников из https://ffmpeg.zeranoe.com/
  • Извлеките содержимое zip
  • Поместите содержимое папки bin (есть три exe-файла) в любую папку, которая является путем в Windows. Я лично использую Ananconda, поэтому я поместил их в / Anaconda / Scripts, но вы можете поместить его в любую папку и добавить эту папку в путь.

-Edit: Заклинания

17
ответ дан Yesh 27 August 2018 в 21:06
поделиться

вы можете решить эту проблему, установив ffmpeg на:

sudo apt-get install ffmpeg

до этого, чтобы убедиться, что у вас есть последняя версия для youtube-dl

sudo youtube-dl -U

23
ответ дан Yordan Georgiev 27 August 2018 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: