Ipython: NumPy DeprecationWarning์ด ์ด์ƒํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋จ

์— ๋งŒ๋“  2018๋…„ 04์›” 06์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ipython/ipython

๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” NumPy 1.14๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ฒฝ๊ณ ๊ฐ€ ์ปจํ…์ŠคํŠธ์— ๋”ฐ๋ผ IPython ๋˜๋Š” IPython ์ปค๋„๋กœ ๋‹ค์‹œ ์ถ”์ ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์•ฝ๊ฐ„ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Jupyter Notebook์—์„œ This is separate from the ipykernel package so we can avoid doing imports until ๋ผ๋Š” ์•ฝ๊ฐ„์˜ ์ถ”๊ฐ€ ํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ทธ๋Œ€๋กœ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์—์„œ ๋จผ์ € ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค). ์ด๊ฒƒ์ด IPython, IPython ์ปค๋„ ๋˜๋Š” NumPy์˜ ๋ฌธ์ œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ MRE๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


์˜ˆ์‹œ:

In [1]: import numpy as np

In [2]: a = np.arange(24).reshape(1, 2, 3, 4)

In [3]: np.expand_dims(a.min(), a.ndim)
/zopt/conda2/envs/test/bin/ipython:1: DeprecationWarning: Both axis > a.ndim and axis < -a.ndim - 1 are deprecated and will raise an AxisError in the future.
  #!/zopt/conda2/envs/test/bin/python
Out[3]: array([0])



ํ™˜๊ฒฝ:

name: test
channels:
- conda-forge
- defaults
dependencies:
- appnope=0.1.0=py36_0
- backcall=0.1.0=py_0
- blas=1.1=openblas
- ca-certificates=2018.1.18=0
- certifi=2018.1.18=py36_0
- decorator=4.2.1=py36_0
- ipython=6.3.1=py36_0
- ipython_genutils=0.2.0=py36_0
- jedi=0.11.1=py36_0
- libgfortran=3.0.0=0
- ncurses=5.9=10
- numpy=1.14.2=py36_blas_openblas_200
- openblas=0.2.20=7
- openssl=1.0.2n=0
- parso=0.1.1=py_0
- pexpect=4.4.0=py36_0
- pickleshare=0.7.4=py36_0
- pip=9.0.3=py36_0
- prompt_toolkit=1.0.15=py36_0
- ptyprocess=0.5.2=py36_0
- pygments=2.2.0=py36_0
- python=3.6.5=1
- readline=7.0=0
- setuptools=39.0.1=py36_0
- simplegeneric=0.8.1=py36_0
- six=1.11.0=py36_1
- sqlite=3.20.1=2
- tk=8.6.7=0
- traitlets=4.3.2=py36_0
- wcwidth=0.1.7=py36_0
- wheel=0.31.0=py36_0
- xz=5.2.3=0
- zlib=1.2.11=0

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

Python์— ์ œ์ถœํ•œ PR์ด ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฏ€๋กœ Python 3.8์—์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/python/cpython/pull/6622

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

์˜ˆ, ์ด๊ฒƒ์€ __main__ ๊ฐ€ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋„๋ก ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. __main__ ๋ชจ๋“ˆ์˜ ์ผ๋ถ€๋กœ ์‹คํ–‰๋˜๋Š” ๋Œ€ํ™”์‹์œผ๋กœ ์ž…๋ ฅํ•œ ์ฝ”๋“œ์˜ 1ํ–‰์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ผ์ธ์€ ๋‹ค๋ฅธ __main__ ๋ชจ๋“ˆ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค. Python์ด IPython์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ปค๋„์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์ด๋Š” ํ…์ŠคํŠธ๋Š” ํ•ด๋‹น ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค( This is separate... ํ…์ŠคํŠธ๋Š” ๋…์ŠคํŠธ๋ง์ž…๋‹ˆ๋‹ค).

์•ฝ๊ฐ„ ์ง€์ €๋ถ„ํ•˜๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฝ์ง€๋งŒ ๊ณ ์น  ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๋งŒํผ ํฐ ๋ฌธ์ œ๋Š” ๊ฒฐ์ฝ” ์•„๋‹™๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•ด์„œ ์ˆ˜๋ฆฌ๋ฅผ ํ•˜๋Ÿฌ ๊ฐ”์Šต๋‹ˆ๋‹ค. __main__ ๊ธฐ์ธํ•œ ๋ชจ๋“  ๊ฒฝ๊ณ ์—์„œ ์ฝ”๋“œ๋ฅผ ์•„์ฃผ ์‰ฝ๊ฒŒ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ์•ฝ๊ฐ„ ๋ถˆ๋งŒ์กฑ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•Œ ์ˆ˜ ์žˆ๋Š” ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์ฝ”๋“œ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์€ IPython์— ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ๋ชจ๋“ˆ์ด ๊ณ ์œ ํ•œ ๊ด€์šฉ๊ตฌ๋กœ ์ฝ”๋“œ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์—ญ์ถ”์  ๋ฐ pdb๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

frame.f_code.co_filename

Warnings๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

frame.f_globals.get('__file__', sys.argv[0])

๊ฐ ์ž…๋ ฅ์— ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ณ ์œ ํ•œ ๊ฐ€์งœ ํŒŒ์ผ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์—ฌ ์—ญ์ถ”์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋‘ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ฒฝ๊ณ ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ณ ๋Œ€ Python ๋ฌธ์ œ ์— ๋Œ€ํ•ด ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ฐฉ๊ธˆ ์–ธ๊ธ‰

Python์— ์ œ์ถœํ•œ PR์ด ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฏ€๋กœ Python 3.8์—์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/python/cpython/pull/6622

@takluyver ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

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