我正在尝试使用 mod_wsgi 在 Apache 2.4.7 下运行 Python Flask 应用程序。它的主要目的是建立一个关于人和他们的兴趣的图表,以及他们之间的联系(例如,如果 A 和 B 都对 PHP 感兴趣,那么会有一个 A <-> PHP <-> B 链接)。
我已经手动编译了 Graphviz,因为 Ubuntu 包禁用了 GTS 并且应用程序需要该功能。我使用的编译选项是:--disable-static --with-x --with-gts --disable-ruby --disable-tcl
.
我已经安装了 pygraphviz 使用:sudo pip install pygraphviz
. 我在 Ubuntu 14.04 上使用 Python 2.7.6。
似乎导致问题的基本代码是:
import pygraphviz as pgv
graph = pgv.AGraph(overlap = 'false', name = name)
# Add nodes
graph.layout(prog = 'neato')
这在命令行上运行良好,但是当我在 Apache 下运行它时,我得到一个内部服务器错误和错误日志中的以下回溯:
[Mon Jan 12 13:45:38.228420 2015] [:error] [pid 19500:tid 140471782790912] Traceback (most recent call last):
[Mon Jan 12 13:45:38.228427 2015] [:error] [pid 19500:tid 140471782790912] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
[Mon Jan 12 13:45:38.228434 2015] [:error] [pid 19500:tid 140471782790912] response = self.full_dispatch_request()
[Mon Jan 12 13:45:38.228459 2015] [:error] [pid 19500:tid 140471782790912] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
[Mon Jan 12 13:45:38.228465 2015] [:error] [pid 19500:tid 140471782790912] rv = self.handle_user_exception(e)
[Mon Jan 12 13:45:38.228471 2015] [:error] [pid 19500:tid 140471782790912] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
[Mon Jan 12 13:45:38.228476 2015] [:error] [pid 19500:tid 140471782790912] reraise(exc_type, exc_value, tb)
[Mon Jan 12 13:45:38.228481 2015] [:error] [pid 19500:tid 140471782790912] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
[Mon Jan 12 13:45:38.228489 2015] [:error] [pid 19500:tid 140471782790912] rv = self.dispatch_request()
[Mon Jan 12 13:45:38.228594 2015] [:error] [pid 19500:tid 140471782790912] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
[Mon Jan 12 13:45:38.228603 2015] [:error] [pid 19500:tid 140471782790912] return self.view_functions[rule.endpoint](**req.view_args)
[Mon Jan 12 13:45:38.228609 2015] [:error] [pid 19500:tid 140471782790912] File "/home/paul/supervisor-finder/flask/supervisorfinder.py", line 154, in show_person
[Mon Jan 12 13:45:38.228614 2015] [:error] [pid 19500:tid 140471782790912] graph = build_graph(graph_name, results, topics)
[Mon Jan 12 13:45:38.228659 2015] [:error] [pid 19500:tid 140471782790912] File "/home/paul/supervisor-finder/flask/supervisorfinder.py", line 124, in build_graph
[Mon Jan 12 13:45:38.228668 2015] [:error] [pid 19500:tid 140471782790912] graph.layout(prog = 'neato')
[Mon Jan 12 13:45:38.228674 2015] [:error] [pid 19500:tid 140471782790912] File "/usr/lib/pymodules/python2.7/pygraphviz/agraph.py", line 1305, in layout
[Mon Jan 12 13:45:38.228679 2015] [:error] [pid 19500:tid 140471782790912] data=self._run_prog(prog,' '.join([args,"-T",fmt]))
[Mon Jan 12 13:45:38.228684 2015] [:error] [pid 19500:tid 140471782790912] File "/usr/lib/pymodules/python2.7/pygraphviz/agraph.py", line 1278, in _run_prog
[Mon Jan 12 13:45:38.228728 2015] [:error] [pid 19500:tid 140471782790912] raise IOError("".join(errors))
[Mon Jan 12 13:45:38.228736 2015] [:error] [pid 19500:tid 140471782790912] IOError
我的 WSGI 配置文件是:
import sys
import logging
sys.path.insert(0, '/home/paul/supervisor-finder/flask')
logging.basicConfig(stream=sys.stderr)
from supervisorfinder import app as application
起初我认为这可能与这个问题相同:PyGraphViz agraph.layout() throws I0 error但我检查了它的来源agraph.py
并且它没有调用_get_prog
函数。
谁能建议可能出了什么问题?我对 Python 相当陌生(通常我使用 C 风格的语言,例如 Perl 和 PHP),所以我可能会犯一个“明显”的错误。