Numpy: numpy์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ค๋ฅ˜

์— ๋งŒ๋“  2016๋…„ 12์›” 24์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: numpy/numpy

์•ˆ๋…•ํ•˜์„ธ์š”,
์ฝ”๋“œ์—์„œ "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 ๋„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์„ค์น˜์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์œ ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์„ธ์š”. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

๋‚˜์—๊ฒŒ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์„œ:

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 ๋นŒ๋“œ์˜ ๋น ๋ฅธ ํ™•์ธ:

  • ๋งค๋‹ˆ๋ฆฌ๋ˆ…์Šค: ์•„๋‹ˆ์˜ค
  • ํ˜„์žฌ ๋ฐ๋น„์•ˆ ํ…Œ์ŠคํŠธ: ์˜ˆ
  • ์šฐ๋ถ„ํˆฌ 12.04: ์˜ˆ
  • ์šฐ๋ถ„ํˆฌ 16.04: ์˜ˆ
  • Conda: ์•„๋‹ˆ์˜ค (2.7 ๋ฐ 3.5 ํ™•์ธ)
  • ํŽ˜๋„๋ผ 25: ์•„๋‹ˆ์˜ค

@ kevinzhai80 : Ubuntu๊ฐ€ ์„ค์น˜๋œ Python์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ์ด์œ ๋กœ ์†Œ์Šค์—์„œ numpy๋ฅผ ๋นŒ๋“œํ•œ ๋‹ค์Œ conda๊ฐ€ ์„ค์น˜๋œ Python์—์„œ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ?

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

๋„ˆํ”„ ์–ด๋””์„œ ๋‚ฌ์–ด? 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 ๋นŒ๋“œ์˜ ๋น ๋ฅธ ํ™•์ธ:

  • ๋งค๋‹ˆ๋ฆฌ๋ˆ…์Šค: ์•„๋‹ˆ์˜ค
  • ํ˜„์žฌ ๋ฐ๋น„์•ˆ ํ…Œ์ŠคํŠธ: ์˜ˆ
  • ์šฐ๋ถ„ํˆฌ 12.04: ์˜ˆ
  • ์šฐ๋ถ„ํˆฌ 16.04: ์˜ˆ
  • Conda: ์•„๋‹ˆ์˜ค (2.7 ๋ฐ 3.5 ํ™•์ธ)
  • ํŽ˜๋„๋ผ 25: ์•„๋‹ˆ์˜ค

@ 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์ด๋ผ๋Š” ๋ชจ๋“ˆ์ด ์—†์Šต๋‹ˆ๋‹ค.

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