Почему draw() в pygraphviz/agraph не работает на сервере (но локально)?
У меня есть приложение Python, использующее Pygraphviz, который отлично работает локально, но на сервере draw
Функция выдает ошибку. Это происходит в make_svg
, Следующие строки являются соответствующей частью ошибок, которые я получаю. (Полный след здесь.)
File "/path/to/app/utils/make_svg.py", line 17, in make_svg
prog='dot'
File "/path/to/pygraphviz/agraph.py", line 1477, in draw
fh = self._get_fh(path, 'w+b')
File "/path/to/pygraphviz/agraph.py", line 1506, in _get_fh
fh = open(path, mode=mode)
FileNotFoundError: [Errno 2] No such file or directory: 'app/svg_files/nope.svg'
логирование type(g)
дает <class 'pygraphviz.agraph.AGraph'>
как и ожидалось.
Я работаю в virtualenv в mod_wsgi 4.6.5/Python3.7
среда на сервере Webfaction.
Локально я использую virtualenv с Python 3.5.
Версия Pygraphviz является 1.3.1.
(Сначала у меня было 1,5 на сервере. Ошибка была точно такой же, за исключением номеров строк.)
Что я могу сделать?
Та же ошибка описана в этом отчете об ошибках прошлого года.
Я не понимаю, какой каталог я должен создать. svg_files
существует и имеет права 777.
draw
функция в конце make_svg
должен создать SVG.
(И в конце extract_coordinates_from_svg
файл снова удален.)
Имя файла - это хеш, созданный в connected_dag
(svg_name
).
1 ответ
На сервере app/svg_files
кажется, не описать то же место, что и на местном уровне.
Я определил путь однозначно, и теперь он работает.
file_path = '{grandparent}/svg_files/{name}.svg'.format(
grandparent=os.path.dirname(os.path.dirname(__file__)),
name=name
)
g.draw(file_path, prog='dot')