1

tkinter プラグインの使用に問題があります。ローカル システムで ubuntu 12.10 デスクトップを使用しており、python 2.7 および 3.2 をインストールしました。OpenERP で tkinter プラグインを使用しましたが、ローカル PC で正常に動作します。しかし問題は、サーバー(Ubuntu 12.04サーバー)で同じコードを使用すると機能しないことです

それが示している

self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk,sync, use) 
TclError: no display name and no $DISPLAY environment variable

ターミナルでpythonで確認しても、エラーが表示されます。これは、tkinterのどこかに問題があることを意味します。また、tkinter と python の両方のバージョンが適切であることも確認しました。しかし、ターミナルでtkinterを見つけているときに、何か変わったことを見つけました。ローカルでは python3.2 にある tkinter プラグインを表示しますが、サーバーでは tkinter を表示しません

許可を確認しましたが、問題ありません。Ubuntuサーバー12.04でtkinterを動作させる方法

4

2 に答える 2

2

完全なトレースバックとより大きなコード抽出を含めると良かったでしょう。エラーメッセージは、TkinterがXグラフィカル環境を見つけることができないことを意味します。これは、Dominicが指摘したように、ヘッドレスサーバーでコードを実行していることを意味している可能性があります。サーバーにXをインストールすることもできますが、マシンが実際にユーザーインターフェイスのないサーバーであることが意図されている場合は、GUIは必要ありません。

そのコードの実行時にGUIを表示する必要がある場合は、サーバー側で実行しないか、クライアントマシンへのX11転送を設定する必要があります。ただし、これはOpenERPのコンテキストではあまり意味がないようです。これは、すべてのユーザーにとって一般的な方法ではほとんど機能しないためです。

今、おそらくmatplotlibを使用してグラフィックを生成していますか(コード抽出ではそれが表示されません)?はいの場合は、この質問またはこの他の質問で説明されているように、画像を生成するためにヘッドレスバックエンドを使用するように強制することができます。

レンダリングコードが呼び出される前に、次のコードを実行するようにしてください。

import matplotlib
import matplotlib.pyplot

# force headless backend, or set 'backend' to 'Agg'
# in your ~/.matplotlib/matplotlibrc
matplotlib.use('Agg')

# force non-interactive mode, or set 'interactive' to False
# in your ~/.matplotlib/matplotlibrc
matplotlib.pyplot.ioff()

次の参考資料も参照してください。

于 2013-02-25T09:25:02.813 に答える
0

まだ興味がある人のために、私はちょうど同じ問題を抱えていました.既存の答えはほぼ正しいですが、順序が重要です.pyplotの前にmatplotlib.useを呼び出す必要があります.

これは私のために働いた:

import matplotlib
# force headless backend, or set 'backend' to 'Agg'
# in your ~/.matplotlib/matplotlibrc
matplotlib.use('Agg')

import matplotlib.pyplot
# force non-interactive mode, or set 'interactive' to False
# in your ~/.matplotlib/matplotlibrc
matplotlib.pyplot.ioff()
于 2013-10-18T17:30:12.650 に答える