下面的代码:
我使用这个构建包上传了Graphviz。
关于Heroku上的graphviz版本,我不确定,但是我在buildpack的bin/compile文件中找到了这一行:
import pygraphviz as p
def main():
A=p.AGraph()
A.add_edge(1,2)
A.layout(prog="dot")
A.draw("1.png")
if __name__ == '__main__':
main()
本地运行正常,但通过Heroku bash启动时返回IO错误:
Format: "png" not recognized. Use one of: canon cmap cmapx cmapx_np dot eps fig gv imap imap_np ismap pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot
我使用这个构建包上传了Graphviz。
heroku config:get BUILDPACK_URL
https://github.com/mfenniak/heroku-buildpack-python-graphviz.git
这是我的requierments.txt
文件:
Django==1.7.1
argparse==1.2.1
dj-database-url==0.3.0
dj-static==0.0.6
django-toolbelt==0.0.1
gunicorn==19.1.1
psycopg2==2.5.4
pygraphviz==1.3rc2
static3==0.5.1
wsgiref==0.1.2
本地 graphviz
版本:
dpkg -p graphviz
Version: 2.26.3-10ubuntu1.1
关于Heroku上的graphviz版本,我不确定,但是我在buildpack的bin/compile文件中找到了这一行:
GRAPHVIZ_BINARY="https://s3-us-west-2.amazonaws.com/mfenniak-graphviz/graphviz-2.30.tgz"
pygraphviz
在 Heroku 和本地环境中版本相同。
更新: 如何至少检查 Heroku 上的 graphviz 版本?
更新: Heroku 上的 dot
版本在设备部分没有 png
。如何解决这个问题?
dot -v
dot - graphviz version 2.30.1 (20130508.0026)
libdir = "/app/mfenniak/graphviz/lib/graphviz"
Activated plugin library: libgvplugin_dot_layout.so.6
Using layout: dot:dot_layout
Activated plugin library: libgvplugin_core.so.6
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
/app/mfenniak/graphviz/lib/graphviz/config6
was successfully loaded.
render : dot fig map pic pov ps svg tk vml xdot
layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
textlayout :
device : canon cmap cmapx cmapx_np dot eps fig gv imap imap_np ismap pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot
loadimage : (lib) eps gif jpe jpeg jpg png ps svg
这个线程看起来相似,但遗憾的是不适用于我的情况。PyGraphViz agraph.layout() 抛出 I0 错误
.tgz
格式文件的建议,以便我可以在我的构建包代码中替换它? GRAPHVIZ_BINARY="https://s3-us-west-2.amazonaws.com/mfenniak-graphviz/graphviz-2.30.tgz" - Sashko Lykhenko