Я довольно плохо знаком с Python (~ 4 недели), и я боролся с этим весь день.
Я использую MacOS 10.13, Python 3.7 через Anaconda Navigator 1.9.12 и Spyder 4.0.1.
Каким-то образом (помните, только нуб) у меня было 2 анакондовых окружения. Я не занимаюсь производственным кодом, а просто исследую, поэтому я решил, что я бы упростил жизнь и просто использовал базовую среду. Я удалил другую среду.
Ранее я работал с FFmpeg и мог делать захват кадров, создавать анимации mpeg и конвертировать их в gif для сообщений в блоге и тому подобного. У меня был установлен FFmpeg в каталогах, связанных с удаленной средой, поэтому он исчез.
Не беспокойтесь, я получил URL git, использовал Terminal для установки его в / opt / anaconda3 / bin. Это все, и я могу запустить FFmpeg из Терминала.
Моя проблема: Когда я пытаюсь запустить модуль, который ранее работал нормально, я получаю следующее сообщение:
[Errno 13] Разрешение denied: '/ opt / anaconda3 / bin / ffmpeg'
В моем модуле я установил расположение FFmpeg по умолчанию: plt.rcParams ['animation.ffmpeg_path'] = '/ opt / anaconda3 / bin / ffmpeg'
В моем модуле у меня есть следующие строки:
writer = animation.FFMpegWriter(fps=frameRate, metadata=metadata)
writer.setup(fig, "animation.mp4", 100)
Это вызывает matplotlib 'animation.py', который запускает следующее:
def setup(self, fig, outfile, dpi=None):
'''
Perform setup for writing the movie file.
Parameters
----------
fig : `~matplotlib.figure.Figure`
The figure object that contains the information for frames
outfile : str
The filename of the resulting movie file
dpi : int, optional
The DPI (or resolution) for the file. This controls the size
in pixels of the resulting movie file. Default is fig.dpi.
'''
self.outfile = outfile
self.fig = fig
if dpi is None:
dpi = self.fig.dpi
self.dpi = dpi
self._w, self._h = self._adjust_frame_size()
# Run here so that grab_frame() can write the data to a pipe. This
# eliminates the need for temp files.
self._run()
def _run(self):
# Uses subprocess to call the program for assembling frames into a
# movie file. *args* returns the sequence of command line arguments
# from a few configuration options.
command = self._args()
_log.info('MovieWriter.run: running command: %s', command)
PIPE = subprocess.PIPE
self._proc = subprocess.Popen(
command, stdin=PIPE, stdout=PIPE, stderr=PIPE,
creationflags=subprocess_creation_flags)
Все работает нормально до последней строки (то есть «команда» выглядит как хорошо отформатированная командная строка FFmpeg, PIPE возвращает -1), но subprocess.Popen () выводит сообщение об ошибке выше.
Я пытался изменить файл разрешения - использование подхода кувалдой и установка всего в / opt / anaconda3 / bin / ffmpeg равной 777, чтение, запись и выполнение. Но это, похоже, не имеет никакого значения. Я действительно не знаю, когда дело доходит до ОС Apple, прав доступа к файлам и т. Д. c. Есть предложения?