为什么pygraphviz/agraph中的draw()不能在服务器上工作(而是在本地)



我有一个使用Pygraphviz的Python应用程序,它在本地运行良好,但在服务器上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'>

我在网络服务器上的mod_wsgi 4.6.5/Python3.7环境中的虚拟机中工作
在本地,我使用Python 3.5的virtualenv。
Pygraphviz的版本是1.3.1。
(首先我在服务器上有1.5。除了行号之外,错误完全相同。(

我能做什么?

去年的错误报告中也描述了同样的错误
我不知道应该创建哪个目录。CCD_ 6存在并且具有权利777。

make_svg末尾的draw函数应该创建SVG
(在extract_coordinates_from_svg结束时,文件再次被删除。(
文件名是在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')

最新更新