์๋
ํ์ธ์,
์ฝ๋์์ "from numpy import *"๋ฅผ ์์ฑํ๊ณ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Traceback (most recent call last):
ํ์ผ "rgbtoyuv.py", 2ํ,
numpy๋ฅผ np๋ก ๊ฐ์ ธ์ค๊ธฐ
ํ์ผ "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/__init__.py", 163ํ,
์์ . ๋ฌด์์๋ก ๊ฐ์ ธ์ค๊ธฐ
ํ์ผ "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/__init__.py", 99ํ,
.mtran์์ ๊ฐ์ ธ์ค๊ธฐ *
๊ฐ์ ธ์ค๊ธฐ ์ค๋ฅ: /usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/mtrand.cpython-35m-x86_64-linux-gnu.so : ์ ์๋์ง ์์ ๊ธฐํธ: PyFPE_jbuf
ํ๋ซํผ ์ฐ๋ถํฌ16.04 x86_64
ํ์ด์ฌ ๋ฒ์ : 3.5.2
numpy ๋ฒ์ :1.11.2 ๋ฐ ๋ฒ์ :1.9.0 ๋ ์๋ํ์ง๋ง ์ค์น์ ์คํจํ์ต๋๋ค.
์ด์ ๋ฅผ ์ฐพ์ ์ ์๋๋ก ๋์์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค.
๋ํ ์ด๋์ ๋ฌ์ด? BTW, ์ด์ ๊ฐ์ ์ง๋ฌธ์ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์์ ๋ฌผ์ด๋ด์ผ ํฉ๋๋ค. github ๋ฌธ์ ๋ ๋ฒ๊ทธ๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
๋์๊ฒ ๋ฒ๊ทธ ๋ณด๊ณ ์์ฒ๋ผ ๋ณด์ ๋๊น?
์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง์ ๋ํ ๋ช ๊ฐ์ง ๋จ์:
CPython์๋ SIGFPE๋ฅผ ์ก์ ์์ธ๋ก ๋ณํํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ ํ์ ์ฝ๋๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด PyFPE_START_PROTECT
/ PyFPE_END_PROTECT
์์ C ์์ค ๋ถ๋ ์์์ ๊ณ์ฐ์ ๋ํํฉ๋๋ค. CPython์ด --with-fpectl
๋ก ์ปดํ์ผ๋ ๊ฒฝ์ฐ( #define WANT_SIGFPE_HANDLER
์ pyconfig.h
), PyFPE_jbuf
๋ ์ ์ญ ๊ธฐํธ๋ก ๋ด๋ณด๋ด์ง๊ณ ์ด๋ฌํ ๋งคํฌ๋ก๋ ํ์ฅ๋ฉ๋๋ค. ์ด ๊ธฐํธ๋ฅผ ์ฐธ์กฐํ๋ ์๋ฆฌํ ๊ฒ๋ค๋ก. CPython์ด --with-fpectl
์์ด ์ปดํ์ผ๋ ๊ฒฝ์ฐ ๊ธฐํธ๊ฐ ๋ด๋ณด๋ด์ง์ง ์๊ณ ๋งคํฌ๋ก๊ฐ ์๋ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ CPython์ด ์ค์ ๋ก --with-fpectl
์ ๋ฌด์ ๋ฐ๋ผ ํธํ๋์ง ์๋ ๋ค๋ฅธ ABI๋ฅผ ๊ฐ์ง์ ์๋ฏธํฉ๋๋ค. ๊ธฐ์จ.
( import fpectl
๋ฅผ ์ํํ์ฌ ์ด๋ค ์ข
๋ฅ์ CPython์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค -- ์ด๊ฒ์ด ์ฑ๊ณตํ๋ฉด --with-fpectl
CPython์ด ์๋ ๊ฒ์
๋๋ค.)
Numpy ์์ฒด๋ ์ด๋ฌํ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ Cython ์๋ ์์ฑ ์ฝ๋๋ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ฒฐ๋ก : --with-fpectl
๋ก ๋น๋๋ CPython์ ์ฌ์ฉํ์ฌ Cython ๋ชจ๋์ ์ปดํ์ผํ๋ฉด --with-fpectl
์์ด ๋น๋๋ CPython์์ ์คํํ๋ ค๊ณ ํ๋ฉด ์ถฉ๋ํฉ๋๋ค.
--with-fpectl
์ฌ์ฉํ๋ ์ผ๋ฐ์ ์ธ Linux CPython ๋น๋์ ๋น ๋ฅธ ํ์ธ:
@ kevinzhai80 : Ubuntu๊ฐ ์ค์น๋ Python์ ์ฌ์ฉํ์ฌ ์ด๋ค ์ด์ ๋ก ์์ค์์ numpy๋ฅผ ๋น๋ํ ๋ค์ conda๊ฐ ์ค์น๋ Python์์ ๊ฐ์ ธ์ค๋ ค๊ณ ํ์ต๋๊น?
์๋
ํ์ธ์ njsmith๋
์ ๋ณด ๊ฐ์ฌํฉ๋๋ค. ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
njsmith ๊ฐ์ฌํฉ๋๋ค. ๋ํ: Ubuntu 17.10 Artful no . ์
๊ทธ๋ ์ด๋๋ก ์ธํด ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
$ ํ์ด์ฌ
Python 2.7.14(๊ธฐ๋ณธ๊ฐ, 2017๋
9์ 23์ผ, 22:06:14)
linux2์ [GCC 7.2.0]
์์ธํ ๋ด์ฉ์ ๋ณด๋ ค๋ฉด "๋์๋ง", "์ ์๊ถ", "ํฌ๋ ๋ง" ๋๋ "๋ผ์ด์ผ์ค"๋ฅผ ์
๋ ฅํ์ญ์์ค.
๊ฐ์ ธ์ค๊ธฐ fectl
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "", 1ํ, ์์
ImportError: fpectl์ด๋ผ๋ ๋ชจ๋์ด ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋์๊ฒ ๋ฒ๊ทธ ๋ณด๊ณ ์์ฒ๋ผ ๋ณด์ ๋๊น?
์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง์ ๋ํ ๋ช ๊ฐ์ง ๋จ์:
CPython์๋ SIGFPE๋ฅผ ์ก์ ์์ธ๋ก ๋ณํํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ ํ์ ์ฝ๋๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด
PyFPE_START_PROTECT
/PyFPE_END_PROTECT
์์ C ์์ค ๋ถ๋ ์์์ ๊ณ์ฐ์ ๋ํํฉ๋๋ค. CPython์ด--with-fpectl
๋ก ์ปดํ์ผ๋ ๊ฒฝ์ฐ(#define WANT_SIGFPE_HANDLER
์pyconfig.h
),PyFPE_jbuf
๋ ์ ์ญ ๊ธฐํธ๋ก ๋ด๋ณด๋ด์ง๊ณ ์ด๋ฌํ ๋งคํฌ๋ก๋ ํ์ฅ๋ฉ๋๋ค. ์ด ๊ธฐํธ๋ฅผ ์ฐธ์กฐํ๋ ์๋ฆฌํ ๊ฒ๋ค๋ก. CPython์ด--with-fpectl
์์ด ์ปดํ์ผ๋ ๊ฒฝ์ฐ ๊ธฐํธ๊ฐ ๋ด๋ณด๋ด์ง์ง ์๊ณ ๋งคํฌ๋ก๊ฐ ์๋ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ CPython์ด ์ค์ ๋ก--with-fpectl
์ ๋ฌด์ ๋ฐ๋ผ ํธํ๋์ง ์๋ ๋ค๋ฅธ ABI๋ฅผ ๊ฐ์ง์ ์๋ฏธํฉ๋๋ค. ๊ธฐ์จ.(
import fpectl
๋ฅผ ์ํํ์ฌ ์ด๋ค ์ข ๋ฅ์ CPython์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค -- ์ด๊ฒ์ด ์ฑ๊ณตํ๋ฉด--with-fpectl
CPython์ด ์๋ ๊ฒ์ ๋๋ค.)Numpy ์์ฒด๋ ์ด๋ฌํ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ Cython ์๋ ์์ฑ ์ฝ๋๋ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ฒฐ๋ก :
--with-fpectl
๋ก ๋น๋๋ CPython์ ์ฌ์ฉํ์ฌ Cython ๋ชจ๋์ ์ปดํ์ผํ๋ฉด--with-fpectl
์์ด ๋น๋๋ CPython์์ ์คํํ๋ ค๊ณ ํ๋ฉด ์ถฉ๋ํฉ๋๋ค.--with-fpectl
์ฌ์ฉํ๋ ์ผ๋ฐ์ ์ธ Linux CPython ๋น๋์ ๋น ๋ฅธ ํ์ธ:@ kevinzhai80 : Ubuntu๊ฐ ์ค์น๋ Python์ ์ฌ์ฉํ์ฌ ์ด๋ค ์ด์ ๋ก ์์ค์์ numpy๋ฅผ ๋น๋ํ ๋ค์ conda๊ฐ ์ค์น๋ Python์์ ๊ฐ์ ธ์ค๋ ค๊ณ ํ์ต๋๊น?