2016-11-13 5 views
1

私はBitnami-Django Ubuntu 14.04 LTSを実行しているGUIレスクラウドサーバーを持っていますが、これはユーザーのデータを取得しグラフ化するものですが、グラフを生成することはできません。明確にするために、私は、グラフイメージが生成され、保存されることに注意します。ユーザーがボタンをクリックしてイメージを保存するオプションはありません。このような機能は、そのようなサーバーでは意味がありません。GUIを持たないUbuntuサーバのmatplotlibと同等ですか?

通常のUbuntu Linux(Mate)14.04 LTSでは、スクリプトは完全に機能し、保存、ズーム、回転などの機能を備えたGUIウィンドウの関連データからmatplotlib.pyplotを生成します。私はショーを起動しようとしていない場合でも、しかし、クラウドサーバ上の私は、このエラーを取得する()関数は:

[email protected]:/opt/bitnami/apps/django/django_projects/Project$ python api-test_volume.py 
Traceback (most recent call last): 
    File "api-test_volume.py", line 8, in <module> 
    import matplotlib.pyplot as plt 
    File "/opt/bitnami/python/lib/python2.7/site-packages/matplotlib/pyplot.py", line 114, in <module> 
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() 
    File "/opt/bitnami/python/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup 
    globals(),locals(),[backend_name],0) 
    File "/opt/bitnami/python/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 6, in <module> 
    from matplotlib.externals.six.moves import tkinter as Tk 
    File "/opt/bitnami/python/lib/python2.7/site-packages/matplotlib/externals/six.py", line 199, in load_module 
    mod = mod._resolve() 
    File "/opt/bitnami/python/lib/python2.7/site-packages/matplotlib/externals/six.py", line 113, in _resolve 
    return _import_module(self.mod) 
    File "/opt/bitnami/python/lib/python2.7/site-packages/matplotlib/externals/six.py", line 80, in _import_module 
    __import__(name) 
    File "/opt/bitnami/python/lib/python2.7/lib-tk/Tkinter.py", line 39, in <module> 
    import _tkinter # If this fails your Python may not be configured for Tk 
ImportError: No module named _tkinter 

は、これは私が他の依存関係をインストールした後も継続し、インストールしようとしたTK-devの、TCL-devのあなたが賢い回避策を知っていない限り、私はグラフを生成するためにmatplotlibに代わるものが必要だと思います。あなたの助けを前にありがとう。

(クイック)編集:私はSave plot to image file instead of displaying it using Matplotlibの修正を認識して試しましたが、クラウドサーバー上では、GUIを抑制するのではなく、GUIとの依存関係が壊れています。

答えて

0

これは実際の回答ではありません。テストすることはできませんでしたが、エラーはtkinterが正常に読み込まれないことが原因です。したがって、Tkバックエンドの使用を避けることが、自然な解決策かもしれません。

matplotlibにはいくつかのバックエンドがあり、一部は対話型プロット用ではありません。

import matplotlib 
print matplotlib.rcsetup.non_interactive_bk 

(これらはpyplotをインポートする前に必ず実行してください)。リストには、

[u'agg', u'cairo', u'emf', u'gdk', u'pdf', u'pgf', u'ps', u'svg', u'template'] 

が含まれていて、可能性のあるものがあります。 (まだpyplotをインポートする前に)、それらのうちの一つを選択

matplotlib.use('<name of backend>') 

を使用するには

最後にpyplotをインポートし、plt.show()を避け、自分のものを実行します。また、いくつかのバックエンドには、いくつかの機能が存在しないかもしれません。 pdfのバックエンドからsvgを保存することはできません。

関連する問題