为什么 pygraphviz/agraph 中的 draw() 在服务器上(但在本地)不起作用?
Why does draw() in pygraphviz/agraph not work on the server (but locally)?
我有一个使用 Pygraphviz 的 Python 应用程序,它在本地运行良好,但在服务器上 draw
函数会抛出错误。它发生在 make_svg
. The following lines are the relevant part of the errors I get. (The full trail is here.)
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'>
。
我在 Webfaction 服务器上的 mod_wsgi 4.6.5/Python3.7
环境中的 virtualenv 中工作。
在本地,我使用带有 Python 3.5.
的 virtualenv
Pygraphviz的版本是1.3.1。
(我先在服务器上有1.5。错误完全一样,除了行号。)
我能做什么?
去年 this bug report 中描述了同样的错误。
我不知道应该创建哪个目录。 svg_files
存在并拥有 777 的权利。
make_svg
末尾的 draw
函数应创建 SVG。
(并且在 extract_coordinates_from_svg
the file is removed again.)
The file name is a hash created in connected_dag
末尾(svg_name
)。
在服务器上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')
我有一个使用 Pygraphviz 的 Python 应用程序,它在本地运行良好,但在服务器上 draw
函数会抛出错误。它发生在 make_svg
. The following lines are the relevant part of the errors I get. (The full trail is here.)
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'>
。
我在 Webfaction 服务器上的 mod_wsgi 4.6.5/Python3.7
环境中的 virtualenv 中工作。
在本地,我使用带有 Python 3.5.
的 virtualenv
Pygraphviz的版本是1.3.1。
(我先在服务器上有1.5。错误完全一样,除了行号。)
我能做什么?
去年 this bug report 中描述了同样的错误。
我不知道应该创建哪个目录。 svg_files
存在并拥有 777 的权利。
make_svg
末尾的 draw
函数应创建 SVG。
(并且在 extract_coordinates_from_svg
the file is removed again.)
The file name is a hash created in connected_dag
末尾(svg_name
)。
在服务器上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')