Readthedocs.org: Matplotlib ๋ฐฑ์—”๋“œ๋Š” Agg๋กœ ๊ฐ•์ œ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 03์›” 17์ผ  ยท  22์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: readthedocs/readthedocs.org

์ตœ๊ทผ์— ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

  warnings.warn(_use_error_msg)
/var/build/user_builds/astropy/checkouts/latest/docs/analytic_functions/index.rst:83: WARNING: Exception occurred in plotting index-1
 from /var/build/user_builds/astropy/checkouts/latest/docs/analytic_functions/index.rst:
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/matplotlib/sphinxext/plot_directive.py", line 515, in run_code
    exec code in ns
  File "<string>", line 14, in <module>
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 1046, in subplots
    fig = figure(**fig_kw)
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 423, in figure
    **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 79, in new_figure_manager
    return new_figure_manager_given_figure(num, figure)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 87, in new_figure_manager_given_figure
    window = Tk.Tk()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
TclError: no display name and no $DISPLAY environment variable

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

(๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ์ฒ˜์Œ ๋ณด๊ณ ํ•œ Astropy ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: https://github.com/astropy/astropy/issues/3600)

Operations

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

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•˜์ง€ ์•Š์•˜๋‹ค
๊ฐ€์ ธ์˜ค๊ธฐ matplotlib
matplotlib.use('Agg')

๊ทธ๋ž˜์„œ ๋Œ€์‹  ๋‹ค์Œ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
matplotlib.pyplot์„ plt๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
plt.switch_backend('agg')

๊ทธ๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์•„๋งˆ๋„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

@ericholscher- ์ด ๋ฌธ์ œ์˜ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์•„์‹ญ๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ํ˜„์žฌ ๋ชจ๋“  ํ”Œ๋กฏ์ด ์ค‘๋‹จ๋˜์—ˆ์œผ๋ฉฐ, ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ†ต์ œํ•  ์ˆ˜ ์—†๊ณ  RTD์™€ ๊ด€๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—๋Š” ์ด ๋ฌธ์ œ๊ฐ€ ์—†๋‚˜์š”?

์šฐ๋ฆฌ๋Š” ๋‚ด๊ฐ€ ์•„๋Š” ์–ด๋–ค ๊ฒƒ๋„ ๋ฐ”๊พธ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๊นŒ?
http://stackoverflow.com/a/3054314

2015๋…„ 3์›” 24์ผ ํ™”์š”์ผ ์˜ค์ „ 1์‹œ 48๋ถ„, Thomas Robitaille < [email protected]

์ผ๋‹ค:

@ericholscher https://github.com/ericholscher - ์–ด๋–ค ์•„์ด๋””์–ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”์ง€
์ด๊ฒƒ์„ ์ผ์œผํ‚ค๋Š”? ํ˜„์žฌ ์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ชจ๋“  ํ”Œ๋กฏ์ด ๊นจ์กŒ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ํ†ต์ œํ•  ์ˆ˜ ์—†๊ณ  RTD์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—๋Š” ์—†๋Š”์ง€
์ด ๋ฌธ์ œ?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rtfd/readthedocs.org/issues/1195#issuecomment -85406365
.

์—๋ฆญ ํ™€์…”
ํฌํ‹€๋žœ๋“œ์— ๊ฑฐ์ฃผํ•˜๋Š” ์ธํ„ฐ๋„ท ์ œ์ž‘์ž ๋˜๋Š”
http://ericholscher.com

@ericholscher - ์˜ˆ, ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ด๊ฒƒ์„ ํ˜ธ์ถœํ•˜์ง€๋งŒ ๋‹ค์Œ์„ ๋ด…๋‹ˆ๋‹ค.

/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1173: UserWarning:  This call to matplotlib.use() has no effect
because the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

๋ฐฑ์—”๋“œ๊ฐ€ ์ด๋ฏธ ๋ฏธ๋ฆฌ ์„ค์ •๋˜์–ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์–ด๋–ค ์ œ์•ˆ? ๋‚˜๋Š” matplotlib์— ๋Œ€ํ•ด ๋งŽ์ด ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ ์šฐ๋ฆฌ๋Š” ํ•ด๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์•„๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์žˆ์–ด ๋งŒ์กฑ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.
1.3.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

2015๋…„ 3์›” 24์ผ ํ™”์š”์ผ ์˜ค์ „ 9:01, Thomas Robitaille < ์•Œ๋ฆผ @github.com

์ผ๋‹ค:

@ericholscher https://github.com/ericholscher - ์˜ˆ, ์ด๋ฏธ ์ „ํ™”๋ฅผ ๊ฑธ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ๋ด…๋‹ˆ๋‹ค.

/usr/lib/pymodules/python2.7/matplotlib/ init .py:1173: UserWarning: matplotlib.use()์— ๋Œ€ํ•œ ์ด ํ˜ธ์ถœ์€ ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ฐฑ์—”๋“œ๊ฐ€ ์ด๋ฏธ ์„ ํƒ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
matplotlib.use()๋Š” _before_ pylab, matplotlib.pyplot,
๋˜๋Š” matplotlib.backends๋ฅผ ์ฒ˜์Œ์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ๊ฐ€ ์ด๋ฏธ ๋ฏธ๋ฆฌ ์„ค์ •๋˜์–ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rtfd/readthedocs.org/issues/1195#issuecomment -85576963
.

์—๋ฆญ ํ™€์…”
ํฌํ‹€๋žœ๋“œ์— ๊ฑฐ์ฃผํ•˜๋Š” ์ธํ„ฐ๋„ท ์ œ์ž‘์ž ๋˜๋Š”
http://ericholscher.com

@mdboom ์ด ๋ช‡ ๊ฐ€์ง€ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. RTD์˜ ๊ธฐ๋ณธ๊ฐ’์ด Agg์ธ ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ).

์•„, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ์ด ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

https://github.com/astrofrog/test-rtd

RTD ๋กœ๊ทธ(https://readthedocs.org/builds/test-rtd-astrofrog/2482239/)๋Š” ๋‹ค์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Making output directory...
Running Sphinx v1.2.2
TkAgg

๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๋Š” TkAgg๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

@mdboom , ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ TkAgg๊ฐ€ ์•„๋‹ˆ๋ผ Agg์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? TkAgg ๋ฐฑ์—”๋“œ๊ฐ€ RTD์— ํ•„์š”ํ•ด์•ผ ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

/etc/matplotlibrc์— ์„ค์ •ํ•˜๋Š” ๊ตฌ์„ฑ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2015๋…„ 3์›” 24์ผ ํ™”์š”์ผ ์˜ค์ „ 9์‹œ 14๋ถ„, Thomas Robitaille < [email protected]

์ผ๋‹ค:

์•„, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ์ด ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

https://github.com/astrofrog/test-rtd

RTD ๋กœ๊ทธ(https://readthedocs.org/builds/test-rtd-astrofrog/2482239/)
์‡ผ:

์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ์ค‘...
์Šคํ•‘ํฌ์Šค v1.2.2 ์‹คํ–‰
TkAgg

๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๋Š” TkAgg๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

@mdboom https://github.com/mdboom , ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ TkAgg๊ฐ€ ์•„๋‹ˆ๋ผ Agg์ธ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rtfd/readthedocs.org/issues/1195#issuecomment -85586195
.

์—๋ฆญ ํ™€์…”
ํฌํ‹€๋žœ๋“œ์— ๊ฑฐ์ฃผํ•˜๋Š” ์ธํ„ฐ๋„ท ์ œ์ž‘์ž ๋˜๋Š”
http://ericholscher.com

@ericholscher - ์•„ Agg ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‚˜์š”? RTD์™€ ๊ฐ™์€ ๋””์Šคํ”Œ๋ ˆ์ด๊ฐ€ ์—†๋Š” ์„œ๋ฒ„์— ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์•„๋ฌด๋„ matplotlib.use ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@ericholscher- ์ด์ œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ํ–ˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

์˜ˆ, ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ์—ด์–ด๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์˜ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋ฏ€๋กœ ์ƒˆ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋‹ค์‹œ ์ค‘๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋นŒ๋“œ ์„œ๋ฒ„.

2015๋…„ 3์›” 24์ผ ํ™”์š”์ผ ์˜ค์ „ 10์‹œ 53๋ถ„, Thomas Robitaille <
[email protected]>์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@ericholscher https://github.com/ericholscher - ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค
์ด์ œ ๋ณ€๊ฒฝ ํ–ˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rtfd/readthedocs.org/issues/1195#issuecomment -85620289
.

์—๋ฆญ ํ™€์…”
ํฌํ‹€๋žœ๋“œ์— ๊ฑฐ์ฃผํ•˜๋Š” ์ธํ„ฐ๋„ท ์ œ์ž‘์ž ๋˜๋Š”
http://ericholscher.com

์ด๊ฒƒ์ด ๊ณ ์ณ์ ธ์•ผ ํ•œ๋‹ค๊ณ  ๋ฏฟ์œผ์‹ญ์‹œ์˜ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚ฉ๋‹ˆ๋‹ค.
"๋ฐฑ์—”๋“œ๊ฐ€ ์ด๋ฏธ ์„ ํƒ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— matplotlib.use()๋Š” pylab, matplotlib.pyplot ๋˜๋Š” matplotlib.backends๋ฅผ ์ฒ˜์Œ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ _์ „์—_ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด /etc/matplotlibrc๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌ ํ•ด์š” !!!

์•ˆ๋…•ํ•˜์„ธ์š” ๋ˆ„๊ตฌ๋“ ์ง€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด /etc/matplotlibrc๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•.

Py ์ฝ”๋“œ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋‹ค์Œ ์ค„์„ ๋„ฃ์œผ๋ฉด ๋ชฉ์ ์ด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
๊ฐ€์ ธ์˜ค๊ธฐ matplotlib
matplotlib.use('Agg')

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•˜์ง€ ์•Š์•˜๋‹ค
๊ฐ€์ ธ์˜ค๊ธฐ matplotlib
matplotlib.use('Agg')

๊ทธ๋ž˜์„œ ๋Œ€์‹  ๋‹ค์Œ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
matplotlib.pyplot์„ plt๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
plt.switch_backend('agg')

๊ทธ๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์•„๋งˆ๋„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” @windows ์—์„œ spyder์—์„œ ํšจ๊ณผ์  ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
๋„๊ตฌ> ํ™˜๊ฒฝ ์„ค์ •> IPython ํ„ฐ๋ฏธ๋„> ๊ทธ๋ž˜ํ”„๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค (๋‚ด ์ŠคํŒŒ์ด๋”๋Š” ์ŠคํŽ˜์ธ์–ด์ด๋ฏ€๋กœ ๋ฉ”๋‰ด ์ด๋ฆ„์€ ๊ทผ์‚ฌ์น˜์ž…๋‹ˆ๋‹ค)
์—ฌ๊ธฐ์—์„œ "์ง€์› ํ™œ์„ฑํ™”" ํ™•์ธ๋ž€์˜ ์„ ํƒ์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

์ŠคํŒŒ์ด๋”๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.

๊ฐ€์ ธ์˜ค๊ธฐ matplotlib
matplotlib.use('TkAgg')
matplotlib.pyplot์„ plt๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

pdf ํŒŒ์ผ์— ์ €์žฅ๋œ ํ”Œ๋กฏ์˜ ์˜ˆ

a = [1, 2, 3, 4]
b = [2, 4, 6, 8]
plt.plot(a, b)

plt.savefig('test.pdf')

๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ Python 3.6 ์ด๋ฏธ์ง€์—์„œ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ป์„ ๋•Œ๋ถ€ํ„ฐ

No module named '_tkinter'

์ตœ์‹  ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ matplotlib๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ.

@Tillsten ๊ท€ํ•˜์˜ requirements.txt ํŒŒ์ผ์— ํ•ด๋‹น ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€์ •ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ? ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ rtd์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด rtd ํ”„๋กœ์ ํŠธ ๋งํฌ๋กœ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.

๊ทธ๋ž˜, ๋‚ด๊ฐ€ ํ–ˆ์–ด. ๋ฌธ์ œ๋Š” ์ด ๋ฌธ์ œ์™€ ๋™์ผํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. matplotlib๊ฐ€ ์„ค์น˜๋˜์—ˆ์ง€๋งŒ ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ๊ฐ€ tkagg(tkinter ์‚ฌ์šฉ)๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๋Š” ํ—ค๋“œ๋ฆฌ์Šค rtd-image์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์œ„์™€ ๊ฐ™์ด rc ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ matplotlib๋ฅผ 3.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ sphinx conf.py ์—์„œ matplotlib ๋ฐฑ์—”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 import matplotlib
 matplotlib.use('agg')

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜์ค‘์— ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋„์ปค ์ด๋ฏธ์ง€์—์„œ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ์— ์ถ”๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

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