Pandas: pip๋กœ pandas๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ•œ ํ›„ pandas ๊ฐ€์ ธ์˜ค๊ธฐ ์ค‘๋‹จ

์— ๋งŒ๋“  2017๋…„ 06์›” 16์ผ  ยท  46์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pandas-dev/pandas

์ฝ”๋“œ ์ƒ˜ํ”Œ, ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๊ฐ€๋Šฅํ•œ ์˜ˆ

> docker run --tty --interactive --rm python:2.7.12-alpine ash
/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
v3.4.6-150-gf952adf [http://dl-cdn.alpinelinux.org/alpine/v3.4/main]
v3.4.6-83-g67e50bc [http://dl-cdn.alpinelinux.org/alpine/v3.4/community]
OK: 5983 distinct packages available
/ # apk add cython g++ musl-dev
(1/21) Upgrading musl (1.1.14-r12 -> 1.1.14-r14)
(2/21) Installing libffi (3.2.1-r2)
(3/21) Installing python (2.7.12-r0)
(4/21) Installing cython (0.24-r1)
(5/21) Installing libgcc (5.3.0-r0)
(6/21) Installing libstdc++ (5.3.0-r0)
(7/21) Installing binutils-libs (2.26-r1)
(8/21) Installing binutils (2.26-r1)
(9/21) Installing gmp (6.1.0-r0)
(10/21) Installing isl (0.14.1-r0)
(11/21) Installing libgomp (5.3.0-r0)
(12/21) Installing libatomic (5.3.0-r0)
(13/21) Installing pkgconf (0.9.12-r0)
(14/21) Installing pkgconfig (0.25-r1)
(15/21) Installing mpfr3 (3.1.2-r0)
(16/21) Installing mpc1 (1.0.3-r0)
(17/21) Installing gcc (5.3.0-r0)
(18/21) Installing musl-dev (1.1.14-r14)
(19/21) Installing libc-dev (0.7-r0)
(20/21) Installing g++ (5.3.0-r0)
(21/21) Upgrading musl-utils (1.1.14-r12 -> 1.1.14-r14)
Executing busybox-1.24.2-r11.trigger
OK: 230 MiB in 51 packages
/ # ln -s locale.h /usr/include/xlocale.h
/ # pip install numpy==1.11.3 pandas==0.20.2
Collecting numpy==1.11.3
  Downloading numpy-1.11.3.zip (4.7MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 4.7MB 242kB/s 
Collecting pandas==0.20.2
  Downloading pandas-0.20.2.tar.gz (10.3MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 10.3MB 124kB/s 
Collecting python-dateutil (from pandas==0.20.2)
  Downloading python_dateutil-2.6.0-py2.py3-none-any.whl (194kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 194kB 994kB/s 
Collecting pytz>=2011k (from pandas==0.20.2)
  Downloading pytz-2017.2-py2.py3-none-any.whl (484kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 491kB 874kB/s 
Collecting six>=1.5 (from python-dateutil->pandas==0.20.2)
  Downloading six-1.10.0-py2.py3-none-any.whl
Building wheels for collected packages: numpy, pandas
  Running setup.py bdist_wheel for numpy ... done
  Stored in directory: /root/.cache/pip/wheels/8f/d6/97/4cc26777ee05997164e480e2e5de2c9e9c4e32dfe325ea5bd6
  Running setup.py bdist_wheel for pandas ... done
  Stored in directory: /root/.cache/pip/wheels/fc/fd/0a/5857e8bee7d5cc3ca22228fb7ab5efa43be57c0f9103e54098
Successfully built numpy pandas
Installing collected packages: numpy, six, python-dateutil, pytz, pandas
Successfully installed numpy-1.11.3 pandas-0.20.2 python-dateutil-2.6.0 pytz-2017.2 six-1.10.0
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
/ # python -c "import pandas"
RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/pandas/__init__.py", line 35, in <module>
    "the C extensions first.".format(module))
ImportError: C extension: umpy.core.multiarray failed to import not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace --force' to build the C extensions first.

๋ฌธ์ œ ์„ค๋ช…

pip ํ•˜์—ฌ Pandas๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ์ง€๋งŒ import pandas ๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

numpy ์™€ pandas ๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๊ฐœ๋ณ„ pip install ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

> docker run --tty --interactive --rm python:2.7.12-alpine ash
/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
v3.4.6-150-gf952adf [http://dl-cdn.alpinelinux.org/alpine/v3.4/main]
v3.4.6-83-g67e50bc [http://dl-cdn.alpinelinux.org/alpine/v3.4/community]
OK: 5983 distinct packages available
/ # apk add cython g++ musl-dev
(1/21) Upgrading musl (1.1.14-r12 -> 1.1.14-r14)
(2/21) Installing libffi (3.2.1-r2)
(3/21) Installing python (2.7.12-r0)
(4/21) Installing cython (0.24-r1)
(5/21) Installing libgcc (5.3.0-r0)
(6/21) Installing libstdc++ (5.3.0-r0)
(7/21) Installing binutils-libs (2.26-r1)
(8/21) Installing binutils (2.26-r1)
(9/21) Installing gmp (6.1.0-r0)
(10/21) Installing isl (0.14.1-r0)
(11/21) Installing libgomp (5.3.0-r0)
(12/21) Installing libatomic (5.3.0-r0)
(13/21) Installing pkgconf (0.9.12-r0)
(14/21) Installing pkgconfig (0.25-r1)
(15/21) Installing mpfr3 (3.1.2-r0)
(16/21) Installing mpc1 (1.0.3-r0)
(17/21) Installing gcc (5.3.0-r0)
(18/21) Installing musl-dev (1.1.14-r14)
(19/21) Installing libc-dev (0.7-r0)
(20/21) Installing g++ (5.3.0-r0)
(21/21) Upgrading musl-utils (1.1.14-r12 -> 1.1.14-r14)
Executing busybox-1.24.2-r11.trigger
OK: 230 MiB in 51 packages
/ # ln -s locale.h /usr/include/xlocale.h
/ # pip install numpy==1.11.3 
Collecting numpy==1.11.3
  Downloading numpy-1.11.3.zip (4.7MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 4.7MB 221kB/s 
Building wheels for collected packages: numpy
  Running setup.py bdist_wheel for numpy ... done
  Stored in directory: /root/.cache/pip/wheels/8f/d6/97/4cc26777ee05997164e480e2e5de2c9e9c4e32dfe325ea5bd6
Successfully built numpy
Installing collected packages: numpy
Successfully installed numpy-1.11.3
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
/ # pip install pandas==0.20.2
Collecting pandas==0.20.2
  Downloading pandas-0.20.2.tar.gz (10.3MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 10.3MB 125kB/s 
Collecting python-dateutil (from pandas==0.20.2)
  Downloading python_dateutil-2.6.0-py2.py3-none-any.whl (194kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 194kB 787kB/s 
Collecting pytz>=2011k (from pandas==0.20.2)
  Downloading pytz-2017.2-py2.py3-none-any.whl (484kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 491kB 1.0MB/s 
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.7.0 in /usr/local/lib/python2.7/site-packages (from pandas==0.20.2)
Collecting six>=1.5 (from python-dateutil->pandas==0.20.2)
  Downloading six-1.10.0-py2.py3-none-any.whl
Building wheels for collected packages: pandas
  Running setup.py bdist_wheel for pandas ... done
  Stored in directory: /root/.cache/pip/wheels/fc/fd/0a/5857e8bee7d5cc3ca22228fb7ab5efa43be57c0f9103e54098
Successfully built pandas
Installing collected packages: six, python-dateutil, pytz, pandas
Successfully installed pandas-0.20.2 python-dateutil-2.6.0 pytz-2017.2 six-1.10.0
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
/ # python -c "import pandas"

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

@jlbooker ๋Š” https://github.com/pandas-dev/pandas/issues/18530 ์—์„œ ์ด๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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

https://github.com/pandas-dev/pandas/issues/11383#issuecomment -294242777๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ƒ์„ธ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ๋•Œ pip์ด ์žก๋Š” numpy ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

numpy 1.13.0 ๊ฐ™์Šต๋‹ˆ๋‹ค.

gcc -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -Ipandas/_libs/src/klib -Ipandas/_libs/src -I/tmp/pip-build-WbJa3a/pandas/.eggs/numpy-1.13.0-py2.7-linux-x86_64.egg/numpy/core/include -I/usr/local/include/python2.7 -c pandas/_libs/testing.c -o build/temp.linux-x86_64-2.7/pandas/_libs/testing.o -Wno-unused-function
  gcc -shared build/temp.linux-x86_64-2.7/pandas/_libs/testing.o -L/usr/local/lib -lpython2.7 -o build/lib.linux-x86_64-2.7/pandas/_libs/testing.so
  building 'pandas._libs.lib' extension
  gcc -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -Ipandas/_libs/src/klib -Ipandas/_libs/src -I/tmp/pip-build-WbJa3a/pandas/.eggs/numpy-1.13.0-py2.7-linux-x86_64.egg/numpy/core/include -I/usr/local/include/python2.7 -c pandas/_libs/lib.c -o build/temp.linux-x86_64-2.7/pandas/_libs/lib.o -Wno-unused-function
  In file included from /tmp/pip-build-WbJa3a/pandas/.eggs/numpy-1.13.0-py2.7-linux-x86_64.egg/numpy/core/include/numpy/ndarraytypes.h:1809:0,
                   from /tmp/pip-build-WbJa3a/pandas/.eggs/numpy-1.13.0-py2.7-linux-x86_64.egg/numpy/core/include/numpy/ndarrayobject.h:18,
                   from /tmp/pip-build-WbJa3a/pandas/.eggs/numpy-1.13.0-py2.7-linux-x86_64.egg/numpy/core/include/numpy/arrayobject.h:4,
                   from pandas/_libs/lib.c:435:
  /tmp/pip-build-WbJa3a/pandas/.eggs/numpy-1.13.0-py2.7-linux-x86_64.egg/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]

๊ทธ๋Ÿฐ ๋‹ค์Œ pip ๋ฌธ์ œ ์ถ”์ ๊ธฐ์— ๋Œ€ํ•ด ๋ณด๊ณ ํ•ด ๋ณด์‹ญ์‹œ์˜ค. setup.py์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ bug pip ๋˜๋Š” setuptools๊ฐ€ ๋” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@rvernica ํœ ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๋Œ€์‹  ์†Œ์Šค์—์„œ ํŒฌ๋”๋ฅผ ๋นŒ๋“œํ•˜๋Š” ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฐ”ํ€ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ์—†์ด ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„ ํ• ๋ฒ„์ „์ด ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜๋œ ์ค„์€ ๋ชฐ๋ž๋„ค์š”. ๊ทธ๋Ÿฌ๋ฉด ์ด๋ฏธ ์ˆ˜์ •๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jorisvandenbossche ์ €๋Š” pip install ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. pip ๋Š” ์•„๋งˆ๋„ ํœ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•˜๊ธฐ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € pip ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

/ # pip install --upgrade pip
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1.3MB 480kB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.2
    Uninstalling pip-8.1.2:
      Successfully uninstalled pip-8.1.2
Successfully installed pip-9.0.1

๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. pip ๋Š” ์„ฑ๊ณตํ•˜์ง€๋งŒ import pandas ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ pandas-0.20.2์šฉ ํœ ์ด ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ ์™œ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์•ˆ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”..

๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์‹œ์Šคํ…œ์ž…๋‹ˆ๊นŒ? manylinux ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ https://github.com/pandas-dev/pandas/issues/11383 ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ pip ๋กœ ์„ค์น˜ํ•˜๋ฉด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” pip๊ฐ€ ์ตœ์‹  numpy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ณ„๋„์˜ ํ™˜๊ฒฝ์—์„œ ํŒฌ๋”๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ ํ™˜๊ฒฝ์—๋Š” ์ด์ „ ๋ฒ„์ „์˜ numpy๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•ด๊ฒฐ์ฑ…์€ ๋‘ ๋‹จ๊ณ„๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๋Ÿฐ ๋‹ค์Œ numpy๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉฐ pandas๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค).
๋”ฐ๋ผ์„œ ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด pip๊ฐ€ ์†์ƒ๋˜์—ˆ๊ฑฐ๋‚˜ setup.py์—์„œ ์ž˜๋ชป๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ์ „๋ฌธ๊ฐ€๋Š” ์—†์Œ).

๋ง์ด๋œ๋‹ค. ์‹œ์Šคํ…œ์€ ์•ŒํŒŒ์ธ ๋ฆฌ๋ˆ…์Šค 3.4์ž…๋‹ˆ๋‹ค.

@rvernica pip ์ด์Šˆ ํŠธ๋ž˜์ปค์— ์‹ ๊ณ ํ•˜์…จ๋‚˜์š”? --no-binary ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์ง€๋งŒ ์˜ฌ๋ฐ”๋ฅธ numpy ๋ฒ„์ „์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ์‹ ๊ณ ํ•  ๊ธฐํšŒ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

--no-binary ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์ง€๋งŒ ์˜ฌ๋ฐ”๋ฅธ numpy ๋ฒ„์ „์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

@TomAugspurger ์ด์ „ ๋ฒ„์ „์˜ numpy๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๊นŒ? (์˜ˆ: pip install numpy==1.11 pandas==0.20 )

๋„ค ๊นจ๋—ํ•œ ํ™˜๊ฒฝ์— pip install numpy==1.11.3 pandas==0.20.2 --no-binary=':all:' --verbose ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธ https://github.com/pypa/pip/issues/3691(https://github.com/pypa/pip/pull/4144 ์—์„œ ๊ตฌํ˜„)์ด ์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜์ด๋ฏ€๋กœ ์ด ์—…์ŠคํŠธ๋ฆผ์„ ๋ณด๊ณ ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•œ๋ฒˆ ํ•ด๋ณด์ž.

๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ์—ฌ์ „ํžˆ ๋ฌด์‹œ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ๊ฒฝ์šฐ pip์— ๋ณด๊ณ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. pyproject.toml ์ถ”๊ฐ€ํ•˜์—ฌ ํ™๋ณดํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” PEP518์ด ์ด๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ค ๊ฒƒ๋„ ๋ณ€๊ฒฝํ• ์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํŒ๋‹ค์Šค ํœ ์„ ๋นŒ๋“œํ•˜๋Š” ์ˆœ๊ฐ„์— ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ๋‚จ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค(pyproject.toml์—์„œ numpy>0.17 ์‚ฌ์–‘์œผ๋กœ, ์ตœ์‹  1.13์„ ๋‹ค์šด๋กœ๋“œํ•  ๊ฒƒ์ž„) ๋™์‹œ์— ์„ค์น˜๋œ ์ •ํ™•ํ•œ numpy ๋ฒ„์ „์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ ํœ  ๋นŒ๋”ฉ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ๋œ ๋ฒ„์ „๋ณด๋‹ค ์ด์ „ ๋ฒ„์ „์ผ ์ˆ˜ ์žˆ์Œ)

์‹ค์ œ๋กœ ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ์ง€์› ๋ฒ„์ „์— numpy ๋ฒ„์ „์„ ๊ณ ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? (๋ฐฐํฌํ•  ๋ฐ”ํ€ด๋ฅผ ๋งŒ๋“ค ๋•Œ ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•˜๋‚˜์š”?) ์ด๊ฒƒ์€ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ์‹ค์ œ ํ™˜๊ฒฝ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์œ„ ๋Œ“๊ธ€ ์ฝ์–ด๋ณด์…จ๋‚˜์š”? numpy์™€ pandas๋ฅผ ๋ณ„๋„์˜ ๋‘ ๋‹จ๊ณ„๋กœ ์„ค์น˜ํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ท€ํ•˜๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•ด ํ›จ์”ฌ ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•,
"pip install numpy==1.12.0 pandas==0.21.0"์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค(์ฐธ๊ณ : ์ด๋ฏธ ๋™์ผํ•œ ๋ฒ„์ „๋งŒ ํ•ด๋‹น).

๋‚˜์ค‘์— python -c " import pandas"๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

"C ํ™•์žฅ์ด ๋จผ์ €์ž…๋‹ˆ๋‹ค.".format(module))
ImportError: C ํ™•์žฅ: numpy.core.multiarray๊ฐ€ ๋นŒ๋“œ๋˜์ง€ ์•Š์€ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์—์„œ pandas๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋จผ์ € 'python setup.py build_ext --inplace --force'๋ฅผ ์‹คํ–‰ํ•˜์—ฌ C ํ™•์žฅ์„ ๋นŒ๋“œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ์œ„์˜ ๋Œ“๊ธ€์„ ์ฝ์–ด๋ณด์‹œ๊ณ  ๊ฐ™์€ ๋ฌธ์ œ๋ผ๋ฉด ๋”ฐ๋กœ ์„ค์น˜๋ฅผ ํ•˜์…”์•ผ ํ•˜๋ฏ€๋กœ pip install numpy=1.12.0 ๋‹ค์Œ pip install pandas=0.21.0

@jorisvandenbossche ๋”ฐ๋กœ ์„ค์น˜ํ–ˆ๋Š”๋ฐ๋„ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐ˜๋Œ€๋กœ ํ–ˆ๋‹ค. ๋‚˜๋Š” ๋ณ„๋„์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒ๋‹ค๋ฅผ ๋ณต์ œํ•˜๊ณ  ํŒ๋‹ค๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํŒ๋‹ค ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์™ธ๋ถ€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” ํ•ญ์ƒ ์‹คํ–‰ํ•  ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

sudo pip install numpy==1.12.0
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ numpy==1.12.0
์šฐ๋ถ„ํˆฌ @ocata :~/devstack$ sudo pip install pandas==0.21.0
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ pandas==0.21.0
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: pytz>=2011k in /usr/local/lib/python2.7/dist-packages (from pandas==0.21.0)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: numpy>=1.9.0 in /usr/local/lib/python2.7/dist-packages (from pandas==0.21.0)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ python-dateutil(pandas==0.21.0์—์„œ)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ 6>=1.5(python-dateutil->pandas==0.21.0์—์„œ)
ubuntu@ocata :~/devstack$ python -c "ํŒ๋‹ค ๊ฐ€์ ธ์˜ค๊ธฐ"
RuntimeError: API ๋ฒ„์ „ 0xb์— ๋Œ€ํ•ด ๋ชจ๋“ˆ์ด ์ปดํŒŒ์ผ๋˜์—ˆ์ง€๋งŒ ์ด ๋ฒ„์ „์˜ numpy๋Š” 0xa์ž…๋‹ˆ๋‹ค.
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "", 1ํ–‰, ์—์„œ
ํŒŒ์ผ "/usr/local/lib/python2.7/dist-packages/pandas/__init__.py", 35ํ–‰,
"C ํ™•์žฅ์ด ๋จผ์ €์ž…๋‹ˆ๋‹ค.".format(module))
ImportError: C ํ™•์žฅ: numpy.core.multiarray๊ฐ€ ๋นŒ๋“œ๋˜์ง€ ์•Š์€ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์—์„œ pandas๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋จผ์ € 'python setup.py build_ext --inplace --force'๋ฅผ ์‹คํ–‰ํ•˜์—ฌ C ํ™•์žฅ์„ ๋นŒ๋“œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ›จ์”ฌ ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ˆ˜ํ–‰ํ•œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์ „์ฒด ์ฝ˜์†” ์ถœ๋ ฅ, ์ด์ƒ์ ์œผ๋กœ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž์„ธํ•œ ์˜ต์…˜, ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ •๋ณด(์–ด๋–ค OS, python ๋ฒ„์ „, ...), ํœ ์ด ์•„๋‹Œ ์†Œ์Šค์—์„œ ์„ค์น˜ํ•˜๋Š”์ง€, ...

ํŒŒ์ด์ฌ 2.7.12
OS: ์šฐ๋ถ„ํˆฌ 16.04 xenial

๋‚˜๋Š” ๋”ฐ๋ผ, ๋‡จํ‚ค๋ฅผ ์„ค์น˜ํ•ด์•ผ http://gnocchi.xyz/install.html#installation ๊ณณ ๋‡จํ‚ค ์„ค์น˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งŒ๋‚ฌ ./stack.sh์„ ์ถ”๊ฐ€ ํ•œ ํ›„, - ํŠน์ˆ˜๋ฅผ-devstack https://github.com/gnocchixyz/ gnocchi ๋Š” pandas๋ฅผ ์„ค์น˜/๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•  ๋•Œ pandas ์ข…์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ํŒฌ๋”์˜ ๋‡จํ‚ค ํŒŒ์ผ ์ข…์†์„ฑ https://github.com/gnocchixyz/gnocchi/blob/ffbb446f3f12d637a6ff45b3eb522191638e8be0/tools/duration_perf_analyse.py#L37

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ, ํŒฌ๋”๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋ณ„๋„์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์ œํ•˜๊ณ  ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜ํ•˜๊ณ  ์™ธ๋ถ€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•˜๋ฉด ์‹๋ณ„๋˜์ง€ ์•Š๊ณ  ์–ด๋””์—์„œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์™€ ๋ฌด๊ด€ํ•œ /python/dist-packages/ ์•„๋ž˜์— ์žˆ๋Š” ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ

sudo pip ์„ค์น˜ ํŒ๋‹ค
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ ํŒฌ๋”
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: pytz>=2011k in /usr/local/lib/python2.7/dist-packages (from pandas)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ numpy>=1.9.0(pandas์—์„œ)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ python-dateutil(pandas์—์„œ)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ 6>=1.5(python-dateutil->pandas์—์„œ)
ubuntu@ocata :/usr/local/lib/python2.7/dist-packages$ python -c "ํŒ๋‹ค ๊ฐ€์ ธ์˜ค๊ธฐ"
RuntimeError: API ๋ฒ„์ „ 0xb์— ๋Œ€ํ•ด ๋ชจ๋“ˆ์ด ์ปดํŒŒ์ผ๋˜์—ˆ์ง€๋งŒ ์ด ๋ฒ„์ „์˜ numpy๋Š” 0xa์ž…๋‹ˆ๋‹ค.
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "", 1ํ–‰, ์—์„œ
ํŒŒ์ผ "pandas/__init__.py", 35ํ–‰,
"C ํ™•์žฅ์ด ๋จผ์ €์ž…๋‹ˆ๋‹ค.".format(module))
ImportError: C ํ™•์žฅ: numpy.core.multiarray๊ฐ€ ๋นŒ๋“œ๋˜์ง€ ์•Š์€ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์—์„œ pandas๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋จผ์ € 'python setup.py build_ext --inplace --force'๋ฅผ ์‹คํ–‰ํ•˜์—ฌ C ํ™•์žฅ์„ ๋นŒ๋“œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jorisvandenbossche ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

๋งˆ์ง€๋ง‰ ๋กœ๊ทธ ์ถœ๋ ฅ์—๋Š” "์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: pandas"๊ฐ€ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ์‹ค์ œ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, pip๊ฐ€ ๋™์ผํ•œ ํŒŒ์ด์ฌ์„ ์ฐธ์กฐํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ (์˜ˆ: python -m pip do

@jorisvandenbossche s "์ด๋ฏธ ์ถฉ์กฑ๋œ ์š”๊ตฌ์‚ฌํ•ญ : pandas" - ๋ง์”€ํ•˜์‹  ๋Œ€๋กœ ๋”ฐ๋กœ ์„ค์น˜๋ฅผ ํ•ด์„œ ๋‹ค์‹œ ํ•˜๋ฉด ๊ผญ ๊ทธ๋ ‡๊ฒŒ

dist ํŒจํ‚ค์ง€์—์„œ ํŒฌ๋”๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? -->> ๋ชจ๋“  ๊ณณ์—์„œ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ์ด 2.7์ธ ์šฐ๋ถ„ํˆฌ 16.04์—์„œ ํŒ๋‹ค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ์„ค์น˜ํ•œ ์‹ ์„ ํ•œ ๊ธฐ๊ณ„์—์„œ

pip install numpy==1.12.0 ๋‹ค์Œ โ€‹โ€‹pip install pandas==0.21.0,

์„ค์น˜ ํ›„ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ

pip install numpy==1.12.0 ๋‹ค์Œ โ€‹โ€‹pip install pandas==0.21.0 ์„ค์น˜ ํ›„ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ „์ฒด ๋กœ๊ทธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(์‹ค์ œ๋กœ ์•„๋ฌด ๊ฒƒ๋„ ์„ค์น˜ํ•˜์ง€ ์•Š๋Š” ๋กœ๊ทธ๊ฐ€ ์•„๋‹ˆ๋ผ numpy์™€ pandas๊ฐ€ ์•„์ง ์„ค์น˜๋˜์ง€ ์•Š์€ ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ).

@jorisvandenbossche ์—ฌ๊ธฐ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๊ณ„ ์„ค์น˜

sudo pip ์„ค์น˜ ํŒ๋‹ค
ํŒฌ๋” ์ˆ˜์ง‘
์บ์‹œ๋œ pandas-0.21.0-cp27-cp27mu-manylinux1_x86_64.whl ์‚ฌ์šฉ
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: pytz>=2011k in /usr/local/lib/python2.7/dist-packages (from pandas)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/lib/python2.7/dist-packages์˜ numpy>=1.9.0(pandas์—์„œ)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ python-dateutil(pandas์—์„œ)
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/local/lib/python2.7/dist-packages์˜ 6>=1.5(python-dateutil->pandas์—์„œ)
์ˆ˜์ง‘๋œ ํŒจํ‚ค์ง€ ์„ค์น˜: pandas
pandas-0.21.0์„ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

ubuntu@ocata :~$ sudo pip install numpy
์š”๊ตฌ ์‚ฌํ•ญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ: /usr/lib/python2.7/dist-packages์˜ numpy

ubuntu@ocata :~$ python -c "ํŒ๋‹ค ๊ฐ€์ ธ์˜ค๊ธฐ"
RuntimeError: API ๋ฒ„์ „ 0xb์— ๋Œ€ํ•ด ๋ชจ๋“ˆ์ด ์ปดํŒŒ์ผ๋˜์—ˆ์ง€๋งŒ ์ด ๋ฒ„์ „์˜ numpy๋Š” 0xa์ž…๋‹ˆ๋‹ค.
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "", 1ํ–‰, ์—์„œ
ํŒŒ์ผ "/usr/local/lib/python2.7/dist-packages/pandas/__init__.py", 35ํ–‰,
"C ํ™•์žฅ์ด ๋จผ์ €์ž…๋‹ˆ๋‹ค.".format(module))
ImportError: C ํ™•์žฅ: numpy.core.multiarray๊ฐ€ ๋นŒ๋“œ๋˜์ง€ ์•Š์€ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์—์„œ pandas๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋จผ์ € 'python setup.py build_ext --inplace --force'๋ฅผ ์‹คํ–‰ํ•˜์—ฌ C ํ™•์žฅ์„ ๋นŒ๋“œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pandas๋ณด๋‹ค ๋จผ์ € numpy๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ numpy๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž์ฒด์ ์œผ๋กœ ์„ค์น˜๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ). numpy์™€ pandas(๊ทธ๋ฆฌ๊ณ  numpy๋ฅผ ๋จผ์ € ์„ค์น˜)๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ํ•˜์—ฌ ๋™์ผํ•˜๊ฒŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
BTW, numpy ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

@jorisvandenbossche๋Š” ๋จผ์ € numpy๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ์— ์ž˜ ์ž‘๋™ํ•˜๊ณ  pandas๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ๊ดœ์ฐฎ์ง€๋งŒ gnocchi์— ๋”ฐ๋ผ ./stack.sh๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ pandas ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ numpy๊ฐ€ ๊ดœ์ฐฎ์€ ๊ณณ์—์„œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

sudo python ๋Š” python ์™€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python -m pip install ... ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ sudo ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

@TomAugspurger ๋‚˜๋Š” ๋‘˜ ๋‹ค ๊ฒฐํ•ฉํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ pip install์„ ์‚ฌ์šฉํ•˜์—ฌ pandas๋ฅผ ์„ค์น˜

์—ฌ๊ธฐ ๋‚ด ์งˆ๋ฌธ; numpy=1.12.0์ด pandas=0.21.0๊ณผ ํ˜ธํ™˜๋˜๋Š”์ง€ ์—ฌ๋ถ€

๋˜๋Š” ํ˜ธํ™˜๋˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” numpy ์ตœ์‹ ๊ณผ pandas ์ตœ์‹ ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” ๊ฐ€์žฅ ์ž˜ ํ˜ธํ™˜๋˜๋Š” numpy & pandas ๋ฒ„์ „?

@maestropandy ๋Š” ๊ฒฝ๋กœ๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

sudo pip install pandas
Collecting pandas
Using cached pandas-0.21.0-cp27-cp27mu-manylinux1_x86_64.whl
Requirement already satisfied: pytz>=2011k in /usr/local/lib/python2.7/dist-packages (from pandas)
ubuntu<strong i="9">@ocata</strong>:~$ sudo pip install numpy
Requirement already satisfied: numpy in /usr/lib/python2.7/dist-packages

์ฒซ ๋ฒˆ์งธ๋Š” /usr/local/lib , ๋‘ ๋ฒˆ์งธ๋Š” /usr/lib ์ด๋ฏ€๋กœ ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์˜ˆ์™ธ๋Š” usr/local/lib ์˜ ํŒŒ์ด์ฌ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@TomAugspurger "sudo python -m pip install numpy"๊ฐ€ /usr/local/lib/์— ์„ค์น˜๋ฉ๋‹ˆ๊นŒ? ์‹œ๋„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ numpy>=1.9.0 & pandas>=0.18.0์„ ์„ค์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— numpy ๋ฐ pandas์— ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ์ด๋Š” numpy์™€ pandas ์ตœ์‹  ๋ฒ„์ „์„ ๋ชจ๋‘ ์˜๋ฏธํ•˜์ง€๋งŒ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ numpy ๋ฐ pandas์™€์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์–ธ๊ธ‰ํ•˜๋Š” ๋ฒ„์ „ ๊ฐ„์—๋Š” ๋น„ํ˜ธํ™˜์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‘˜ ๋‹ค ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ƒˆ ํŒ๋‹ค ๋ฒ„์ „์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ pip install pandas==0.20.2 ์‚ฌ์šฉํ•˜์„ธ์š”.

@abhishekg2389 ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋นŒ๋“œ ํŒŒ์ผ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Fedora 25์—์„œ ์œ ์‚ฌํ•œ(๋™์ผํ•œ?) ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

$ python --version
Python 2.7.13
$ which python
/usr/bin/python



md5-c7b975f7c1ac4eb89f5fe68ce1d09cd7



$ sudo pip install pandas
[sudo] password for .....:
Requirement already satisfied: pandas in /usr/lib64/python2.7/site-packages
Requirement already satisfied: pytz>=2011k in /usr/lib/python2.7/site-packages (from pandas)
Requirement already satisfied: python-dateutil in /usr/lib/python2.7/site-packages (from pandas)
Requirement already satisfied: numpy>=1.9.0 in /usr/lib64/python2.7/site-packages (from pandas)
Requirement already satisfied: six>=1.5 in /usr/lib/python2.7/site-packages (from python-dateutil->pandas)

$ sudo pip install numpy
Requirement already satisfied: numpy in /usr/lib64/python2.7/site-packages



md5-79f115fb1bb7ca0fecb38162c5f341da



$ python testPandas.py 
RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa
Traceback (most recent call last):
  File "runProphet.py", line 1, in <module>
    import pandas as pd
  File "/usr/lib64/python2.7/site-packages/pandas/__init__.py", line 35, in <module>
    "the C extensions first.".format(module))
ImportError: C extension: numpy.core.multiarray failed to import not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace --force' to build the C extensions first.



md5-fca2a04366ebb14ff185882c94092f99



$ sudo pip install pandas==0.20.2
[sudo] password for jbooker: 
Collecting pandas==0.20.2
  Downloading pandas-0.20.2-cp27-cp27mu-manylinux1_x86_64.whl (22.4MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 22.4MB 79kB/s 
Requirement already satisfied: pytz>=2011k in /usr/lib/python2.7/site-packages (from pandas==0.20.2)
Requirement already satisfied: numpy>=1.7.0 in /usr/lib64/python2.7/site-packages (from pandas==0.20.2)
Requirement already satisfied: python-dateutil in /usr/lib/python2.7/site-packages (from pandas==0.20.2)
Requirement already satisfied: six>=1.5 in /usr/lib/python2.7/site-packages (from python-dateutil->pandas==0.20.2)
Installing collected packages: pandas
  Found existing installation: pandas 0.21.0
    Uninstalling pandas-0.21.0:
      Successfully uninstalled pandas-0.21.0
Successfully installed pandas-0.20.2

์–ด๋–ค ๋ฒ„์ „์˜ numpy๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  pandas 0.21.0์„ ์„ค์น˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (๋‹น์‹ ์ด ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์€ ๊ทธ ์‹œ์ ์— ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์„ค์น˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

$ pip show numpy
Name: numpy
Version: 1.11.2
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: [email protected]
License: BSD
Location: /usr/lib64/python2.7/site-packages

pandas 0.21.0์„ ์„ค์น˜ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด ์‹œ์Šคํ…œ(??)์— ์ด๋ฏธ ์„ค์น˜๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. RPM ํŒจํ‚ค์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•„ yum/dnf ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Facebook์˜ Prophet ํŒจํ‚ค์ง€(Pandas ๋ฐ Numpy์— ์ข…์†๋จ)๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ pandas 0.18.1์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. 0.21.0์ด ์•„๋‹ˆ๋ผ 0.18.1์ด๋ผ๋Š” ์‚ฌ์‹ค์ด ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

$ sudo pip install fbprophet
Collecting fbprophet
  Using cached fbprophet-0.2.1.tar.gz
Requirement already satisfied: matplotlib in /usr/lib64/python2.7/site-packages (from fbprophet)
Requirement already satisfied: pandas>=0.18.1 in /usr/lib64/python2.7/site-packages (from fbprophet)
Requirement already satisfied: pystan>=2.14 in /usr/lib64/python2.7/site-packages (from fbprophet)
Requirement already satisfied: cycler>=0.10 in /usr/lib/python2.7/site-packages (from matplotlib->fbprophet)
Requirement already satisfied: subprocess32 in /usr/lib64/python2.7/site-packages (from matplotlib->fbprophet)
Requirement already satisfied: pytz in /usr/lib/python2.7/site-packages (from matplotlib->fbprophet)
Requirement already satisfied: six>=1.10 in /usr/lib/python2.7/site-packages (from matplotlib->fbprophet)
Requirement already satisfied: backports.functools-lru-cache in /usr/lib/python2.7/site-packages (from matplotlib->fbprophet)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/lib/python2.7/site-packages (from matplotlib->fbprophet)
Requirement already satisfied: numpy>=1.7.1 in /usr/lib64/python2.7/site-packages (from matplotlib->fbprophet)
Requirement already satisfied: python-dateutil>=2.0 in /usr/lib/python2.7/site-packages (from matplotlib->fbprophet)
Requirement already satisfied: Cython!=0.25.1,>=0.22 in /usr/lib64/python2.7/site-packages (from pystan>=2.14->fbprophet)
Installing collected packages: fbprophet
  Running setup.py install for fbprophet ... done
Successfully installed fbprophet-0.2.1

ํŒ๋‹ค๊ฐ€ ์–ด๋–ป๊ฒŒ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ๋ชจ๋ฅด๋ฉด ๋„์›€์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. pandas๋ฅผ ๋‹ค์‹œ 0.21.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ถœ๋ ฅ์„ ๊ธฐ๋กํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

0.21.0์ด ์•„๋‹ˆ๋ผ 0.18.1์ด๋ผ๋Š” ์‚ฌ์‹ค์ด ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

>=0.18.1์ด๋ผ๊ณ ๋งŒ ํ‘œ์‹œ๋˜๋ฏ€๋กœ 0.21.0์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„ ๋งž๋‹ค. '>='๋ฅผ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋ฒ„์ „์ด ์•„๋‹ˆ๋ผ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ–ˆ๋‹ค๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

0.21.0์œผ๋กœ ๋‹ค์‹œ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(์„ค์น˜๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ).

$ sudo pip install pandas==0.21.0
[sudo] password for jbooker: 
Collecting pandas==0.21.0
  Using cached pandas-0.21.0-cp27-cp27mu-manylinux1_x86_64.whl
Requirement already satisfied: pytz>=2011k in /usr/lib/python2.7/site-packages (from pandas==0.21.0)
Requirement already satisfied: python-dateutil in /usr/lib/python2.7/site-packages (from pandas==0.21.0)
Requirement already satisfied: numpy>=1.9.0 in /usr/lib64/python2.7/site-packages (from pandas==0.21.0)
Requirement already satisfied: six>=1.5 in /usr/lib/python2.7/site-packages (from python-dateutil->pandas==0.21.0)
Installing collected packages: pandas
  Found existing installation: pandas 0.20.2
    Uninstalling pandas-0.20.2:
      Successfully uninstalled pandas-0.20.2
Successfully installed pandas-0.21.0

ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ:

import pandas as pd
import numpy as np

print "Hello, world."

์˜ค๋ฅ˜๋ฅผ ๋‹ค์‹œ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

$ python testPandas.py 
RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa
Traceback (most recent call last):
  File "runProphet.py", line 1, in <module>
    import pandas as pd
  File "/usr/lib64/python2.7/site-packages/pandas/__init__.py", line 35, in <module>
    "the C extensions first.".format(module))
ImportError: C extension: numpy.core.multiarray failed to import not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace --force' to build the C extensions first.

0.20.2๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฒ”์œ„๋ฅผ ์ขํžˆ๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์ผ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ข‹์•„, ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹ค์ œ๋กœ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ ๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์ง€๋งŒ ์ƒˆ ๋ฌธ์ œ๋กœ(์—ฌ๊ธฐ์˜ ์›๋ž˜ ๋ฌธ์ œ๋Š” ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•˜๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ์˜€๊ธฐ ๋•Œ๋ฌธ์—)

@jlbooker ๋Š” https://github.com/pandas-dev/pandas/issues/18530 ์—์„œ ์ด๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด์ด ๋ฌธ์ œ๋Š” ํŒฌ๋” ์ž์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•˜์—ฌ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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