Ipython: QXcbConnection: ๋””์Šคํ”Œ๋ ˆ์ด์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 05์›” 31์ผ  ยท  32์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ipython/ipython

์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์ฝ˜๋‹ค ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ๋•Œ:

conda create --name test ipython matplotlib

๊ทธ๋Ÿฐ ๋‹ค์Œ ipython ๋‚ด์—์„œ import matplotlib.pyplot ๋ฅผ ์‹œ๋„ํ•˜๋ฉด ๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค.

In [1]: import matplotlib.pyplot

In [2]: QXcbConnection: Could not connect to display
Aborted

๋ฐ”๋‹๋ผ ํŒŒ์ด์ฌ ์…ธ์—์„œ ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. py2.7.13(ipython 5.3.0) ๋ฐ py3.6.1(ipython 6.0.0) ๋ชจ๋‘์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋จผ์ € ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐ ๊ทธ๋ž˜์„œ ๋‚˜๋Š”์ด๊ฐ€ ipython ๋ฒ„๊ทธ ๋˜๋Š” CONDA ๋ฒ„๊ทธ์ธ์ง€ ๋ชจ๋ฅด๋Š” ์•„๋‚˜์ฝ˜๋‹ค ,ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ์—ฌ๊ธฐ์—์ฃผ์˜ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์—ฌ๊ธฐ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค .

๋‚ด .bash_profile export QT_QPA_PLATFORM='offscreen' ๋ฅผ ์„ค์ •ํ•˜๋ฉด ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  32 ๋Œ“๊ธ€

os.environ['DISPLAY'] ๊ฐ€ ๋ฐ”๋‹๋ผ Python ์…ธ์—์„œ์™€ ๊ฐ™์ด IPython์—์„œ๋„ ๋™์ผํ•œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

matplotlib๊ฐ€ ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์™œ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š”์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งž์•„-- ๋””์Šคํ”Œ๋ ˆ์ด๊ฐ€ ์—†๋Š” ํด๋Ÿฌ์Šคํ„ฐ ํ—ค๋“œ ๋…ธ๋“œ์—์„œ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ $DISPLAY ์„ธํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค( os.environ['DISPLAY'] ๋Š” ๋‘ ์‰˜ ๋ชจ๋‘์—์„œ KeyError ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค).

๊ทธ๋ฆฌ๊ณ  ๋ฐฑ์—”๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ 'agg' ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ ipython์„ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ณ  matplotlib๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Jupyter ์ธํ„ฐํŽ˜์ด์Šค์—์„œ IPython ํ„ฐ๋ฏธ๋„ ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” IPython์„ ์ปค๋„๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ปค๋„๋กœ์„œ์˜ IPython์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ๋ผ์ธ ํ”Œ๋กฏ์„ ์ƒ์„ฑํ•˜๋„๋ก MPLBACKEND ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ํ„ฐ๋ฏธ๋„์˜ IPython์—์„œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ธ๋ผ์ธ ํ”Œ๋กฏ์—๋Š” X ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. :-/

๋‚˜๋Š” ๋‹จ์ง€ ipython ํ„ฐ๋ฏธ๋„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. DISPLAY ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@tacaswell IPython์ด ์—ฌ๊ธฐ์—์„œ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ Anaconda์˜ Matplotlib์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๊ฐ€ Qt5์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด T๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Tk๋กœ ๋ณ€๊ฒฝํ•ด๋„ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

pyplot์„ IPython ๋‚ด๋ถ€๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ์ด๋ฒคํŠธ ๋ฃจํ”„ ํ†ตํ•ฉ์„ ๊ฐ์ง€ํ•˜๊ณ  ์„ค์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— IPython ๋Œ€ python์—์„œ ์ฆ‰์‹œ ํ‘œ์‹œ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํ”„๋กฌํ”„ํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ”Œ๋กฏ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•  ๋•Œ ๊ฒฐ๊ตญ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์œผ๋กœ t๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์œผ๋กœ t๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ •ํ™•ํ•˜๊ฒŒ ๋ฌด์Šจ ๋œป์ž…๋‹ˆ๊นŒ? Anaconda๊ฐ€ Qt5๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

Qt5๋Š” ๋” ๋‚˜์€ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฉฐ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ hi-dpi ํ™”๋ฉด์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Tk๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์—์„œ ํ‡ด๋ณดํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„, ์šฐ๋ฆฌ๋Š” ํ—ค๋“œ๋ฆฌ์Šค Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ๋…ธํŠธ๋ถ์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ๊ฑฑ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Matplotlib 1.5(๋‚ด ์ƒ๊ฐ์—๋Š”)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋…ธํŠธ๋ถ์ด ์ž๋™์œผ๋กœ inline ๋ฅผ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ?

๊ทธ๊ฒƒ์€ ์ „์ ์œผ๋กœ jupyter ์ธก์— ์žˆ์Šต๋‹ˆ๋‹ค.

MPLBACKEND ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์•„์ง ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ipykernel์€ ์ธ๋ผ์ธ ๋ฐฑ์—”๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์˜ ์ฃผ์„์€ ์ด๊ฒƒ์ด mpl >= 1.5์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  matplotlibrc๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์ง€๋งŒ ์ฝ”๋“œ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐฑ์—”๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์šฐ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์ •๋ง ๋ฉ‹์ง€๋„ค์š”! ๊ทธ๋Ÿฌ๋ฉด ๋‹ซ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

OP๋Š” ์ด ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด matplotlibrc์—์„œ Matplotlib์˜ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๋กœ 'agg'๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋‹ค์‹œ ์ฝ์œผ๋ฉด ์ปค๋„์ด ์•„๋‹Œ ํ„ฐ๋ฏธ๋„ IPython์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ MPLBACKEND ์„ค์ •์— ๋Œ€ํ•ด ๋งํ•œ ๊ฒƒ์€ ํ„ฐ๋ฏธ๋„ IPython์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ณด๊ณ ๋œ ๊ฒƒ์ด IPython์˜ ๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ์ด๊ฒƒ์„ ๋‹ซ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ—ค๋“œ๋ฆฌ์Šค ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ๊ฑฐ๋‚˜ MPL์˜ "IPython ๋‚ด๋ถ€" ๊ฒ€์‚ฌ๊ฐ€ ํ—ค๋“œ๋ฆฌ์Šค ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“ , ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” IPython์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ ์ด ๋ฌธ์ œ๋ฅผ ํ† ๋ก ์˜ ์žฅ์œผ๋กœ ๊ณ„์† ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ, ipython ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” MPL์ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ipython ์…ธ์„ ์‹œ์ž‘ํ•˜๊ณ  matplotlib.pyplot์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ™•์ธํ•ด์•ผ ํ•˜๋ฉฐ, matplotlibrc ์˜ต์…˜์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋ฐฑ์—”๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@timothydmorton ๋ฌธ์ œ๋Š” "์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๊ธˆ GUI ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์š”์ฒญํ–ˆ์ง€๋งŒ ์ผ์ข…์˜ ์˜๋ฏธ

์ตœ๊ทผ์— "์–ด๋–ค Qt ๋ฒ„์ „์ด ์„ค์น˜๋œ์ง€"๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ฐฑ์—”๋“œ ํด๋ฐฑ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ GUI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋™์‹œ์— ๊ฐ€์ ธ์˜ค๋ฉด GUI ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์„œ๋กœ๋ฅผ ๋ฐŸ๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ๊นŒ๋‹ค๋กœ์›Œ์ง‘๋‹ˆ๋‹ค.

๋‚˜๋„ ์ด ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•˜๊ณ  ipython ๋Œ€์‹  ์ผ๋ฐ˜ Python์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์— ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@russelljjarvis ์‚ฌ์†Œํ•œ ์„ฑ๊ฐ€์‹ฌ์ด์ง€๋งŒ ipython์„ ์‹œ์ž‘ํ•  ๋•Œ ์‹คํ–‰ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ช…๋ น์ด import matplotlib; matplotlib.use('agg') ์ด๋ฉด ipython์ด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ:

import matplotlib; matplotlib.use('agg')

๋‚ด๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ช…๋ น์ด์ง€๋งŒ ์—ฌ์ „ํžˆ ๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค.

In [1]: QXcbConnection: Could not connect to display :0
Aborted

ํ”„๋กœ๊ทธ๋žจ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„ ์ผ๋ฐ˜์ ์œผ๋กœ ๋””๋ฒ„๊ทธ ๋ฐ ์›์ˆญ์ด ํŒจ์น˜์— ๋Œ€ํ•œ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋‚จ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ ์‹คํ–‰ํ•œ ํ›„ ipython -i file_name.py ํ•˜์—ฌ Python์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ipcluster start -n 8 --profile=default &

file_name์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์ด import matplotlib; matplotlib.use('agg')

ipcluster๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค .

๋‚ด .bash_profile export QT_QPA_PLATFORM='offscreen' ๋ฅผ ์„ค์ •ํ•˜๋ฉด ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋™๋ฃŒ๊ฐ€ ์ตœ๊ทผ์— ๊ฐ™์€ ์ œ์•ˆ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. Docker์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์ง„์ˆ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ENV QT_QPA_PLATFORM offscreen . ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ง€๊ธˆ ํšจ๊ณผ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ๋‹ค.

๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

export QT_QPA_PLATFORM='offscreen' ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

(python:17399): Gtk-WARNING **: cannot open display:

๋…ธํŠธ๋ถ์—์„œ ์ง์ ‘ ์†”๋ฃจ์…˜

import os
os.environ['QT_QPA_PLATFORM']='offscreen'

๋Šฆ์€ ํ›„์† ์กฐ์น˜๋กœ Matplotlib 3.0์—์„œ ์ด์ œ ์ž๋™ ๋ฐฑ์—”๋“œ ์„ ํƒ์„ ์ง€์›ํ•˜๊ณ  ํ—ค๋“œ๋ฆฌ์Šค ์„œ๋ฒ„์—์„œ GUI ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์š”์ฒญํ•˜๋Š” rcparams ํŒŒ์ผ์„ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค).

์ด ๋‹ต๋ณ€์€ https://unix.stackexchange.com/questions/192642/wkhtmltopdf-qxcbconnection-could-not-connect-to-display
์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•œ ํ›„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

"conda update matplotlib"๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์„ค์ •์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!!!

๋‚ด๋ณด๋‚ด๊ธฐ QT_QPA_PLATFORM='์˜คํ”„์Šคํฌ๋ฆฐ'

๋Šฆ์€ ํ›„์† ์กฐ์น˜๋กœ Matplotlib 3.0์—์„œ ์ด์ œ ์ž๋™ ๋ฐฑ์—”๋“œ ์„ ํƒ์„ ์ง€์›ํ•˜๊ณ  ํ—ค๋“œ๋ฆฌ์Šค ์„œ๋ฒ„์—์„œ GUI ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์š”์ฒญํ•˜๋Š” rcparams ํŒŒ์ผ์„ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค)

Matplotlib 3.1์€ ์ž๋™ ๋ฐฑ์—”๋“œ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ 'Agg'๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Anaconda์˜ Matplotlib์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๊ฐ€ Qt5์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด T๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฑฐ ์–ด๋””์„œ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‚˜์š”?

export QT_QPA_PLATFORM=offscreen ์„ค์ •ํ•œ ํ›„ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

[tb571<strong i="7">@da02</strong> ~]$ jupyter console --kernel slicer-4.11
qt.qpa.plugin: Could not find the Qt platform plugin "offscreen" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

QT_QPA_PLATFORM='offscreen' ์„ค์ • ํ›„ matplotlib ๋ฐ fastai ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ plt.figure() ๋˜๋Š” ํ”Œ๋กฏ์„ ์ถœ๋ ฅํ•˜๋Š” ๋‹ค๋ฅธ ๋ช…๋ น์€ ๋‹ค์Œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

This plugin does not support propagateSizeHints()
This plugin does not support raise()

๋‚˜๋„์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰