from flask import Flask
import numpy
app = Flask(__name__)
uwsgi ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก.
์ ์ฒด ํ๊ฒฝ: https://github.com/luckydonald-archive/numpy-issues-14384/
|> test_bot_1 | [uWSGI] getting INI configuration from /config/uwsgi.ini
|> test_bot_1 | *** Starting uWSGI 2.0.18 (64bit) on [Wed Aug 28 00:25:33 2019] ***
|> test_bot_1 | compiled with version: 6.3.0 20170516 on 04 May 2019 16:28:22
|> test_bot_1 | os: Linux-4.4.0-75-generic #96-Ubuntu SMP Thu Apr 20 09:56:33 UTC 2017
|> test_bot_1 | nodename: 2dd932a7998b
|> test_bot_1 | machine: x86_64
|> test_bot_1 | clock source: unix
|> test_bot_1 | pcre jit disabled
|> test_bot_1 | detected number of CPU cores: 8
|> test_bot_1 | current working directory: /app
|> test_bot_1 | detected binary path: /usr/local/bin/uwsgi
|> test_bot_1 | your processes number limit is 1048576
|> test_bot_1 | your memory page size is 4096 bytes
|> test_bot_1 | detected max file descriptor number: 1048576
|> test_bot_1 | lock engine: pthread robust mutexes
|> test_bot_1 | thunder lock: disabled (you can enable it with --thunder-lock)
|> test_bot_1 | uwsgi socket 0 bound to UNIX address /sockets/bots/test_bot.sock fd 3
|> test_bot_1 | Python version: 3.6.8 (default, Mar 27 2019, 08:49:59) [GCC 6.3.0 20170516]
|> test_bot_1 | *** Python threads support is disabled. You can enable it with --enable-threads ***
|> test_bot_1 | Python main interpreter initialized at 0x55b90bbdc100
|> test_bot_1 | your server socket listen backlog is limited to 100 connections
|> test_bot_1 | your mercy for graceful operations on workers is 60 seconds
|> test_bot_1 | mapped 1239640 bytes (1210 KB) for 16 cores
|> test_bot_1 | *** Operational MODE: preforking ***
|> test_bot_1 | WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x55b90bbdc100 pid: 1 (default app)
|> test_bot_1 | mounting main.py on /test_bot
|> test_bot_1 | Traceback (most recent call last):
|> test_bot_1 | File "main.py", line 3, in <module>
|> test_bot_1 | import numpy
|> test_bot_1 | File "/usr/local/lib/python3.6/site-packages/numpy/__init__.py", line 142, in <module>
|> test_bot_1 | from . import core
|> test_bot_1 | File "/usr/local/lib/python3.6/site-packages/numpy/core/__init__.py", line 17, in <module>
|> test_bot_1 | from . import multiarray
|> test_bot_1 | File "/usr/local/lib/python3.6/site-packages/numpy/core/multiarray.py", line 14, in <module>
|> test_bot_1 | from . import overrides
|> test_bot_1 | File "/usr/local/lib/python3.6/site-packages/numpy/core/overrides.py", line 47, in <module>
|> test_bot_1 | """)
|> test_bot_1 | RuntimeError: implement_array_function method already has a docstring
์๋ก ์ค์นํ numpy
, 2019-08-28.
๊ฝค ๋ง์ ํ
์คํธ ํ์ uwsgi
๋ด์์ ์คํ๋๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ค๊ณ ํ์ ํฉ๋๋ค.
์ด๊ฒ์ ๋ง์ฐํ ๋ฒจ์ ์ธ๋ฆฝ๋๋ค. IIRC uwsgi
๋ -OO
์คํํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ผ์ข
์ ๋
์คํธ๋ง ์กฐ์์ ์ํํฉ๋๋ค.
์ด๋ Python ์ฝ์์ IPython์ ์ฌ์ฉํ๋ Spyder์์๋ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ค์ "ํ์ด์ฌ์ด๋ IPython ์ฝ์์์ ํ์ผ์ ์คํํ ๋ ๊ฐ์ ธ์จ ๋ชจ๋์ ํ์ด์ฌ์ด ๊ฐ์ ๋ก ๋ค์ ๋ก๋ํ๋๋ก"ํ๋ "์ฌ์ฉ์ ๋ชจ๋ ๋ฆฌ๋ก๋"๋ผ๋ ๊ธฐ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๊ฒ์ del sys.modules[modname]
ํฉ๋๋ค.
numpy๋ฅผ ๊ฐ์ ธ์ค๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ์คํ ์ถ์ ์ด ๋ค์์ผ๋ก ๋๋๋ ๊ฒ์ ์ป์ต๋๋ค.
[...]
numpy๋ฅผ np๋ก ๊ฐ์ ธ์ค๊ธฐํ์ผ "C:\Program Files\Python35\lib\site-packagesnumpy\__init__.py", 142ํ,
์์ . ์ฝ์ด ๊ฐ์ ธ์ค๊ธฐํ์ผ "C:\Program Files\Python35\lib\site-packagesnumpy\core\__init__.py", 17ํ,
์์ . ๋ค์ค ๋ฐฐ์ด ๊ฐ์ ธ์ค๊ธฐํ์ผ "C:\Program Files\Python35\lib\site-packagesnumpy\core\multiarray.py", 14ํ,
์์ . ๊ฐ์ ธ์ค๊ธฐ ์ฌ์ ์ํ์ผ "C:\Program Files\Python35\lib\site-packagesnumpy\core\overrides.py", 47ํ,
""")RuntimeError:implement_array_function ๋ฉ์๋์ ์ด๋ฏธ docstring์ด ์์ต๋๋ค.
๋์๊ฒ๋ ์ผ์ด๋๋ค(Django ์๋ฒ):
File "/opt/project/consensx/graph/values_graph.py", line 2, in <module>
import matplotlib.pyplot as plt
File "/pyroot/lib/python3.7/site-packages/matplotlib/__init__.py", line 138, in <module>
from . import cbook, rcsetup
File "/pyroot/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 31, in <module>
import numpy as np
File "/pyroot/lib/python3.7/site-packages/numpy/__init__.py", line 142, in <module>
from . import core
File "/pyroot/lib/python3.7/site-packages/numpy/core/__init__.py", line 17, in <module>
from . import multiarray
File "/pyroot/lib/python3.7/site-packages/numpy/core/multiarray.py", line 14, in <module>
from . import overrides
File "/pyroot/lib/python3.7/site-packages/numpy/core/overrides.py", line 47, in <module>
""")
RuntimeError: implement_array_function method already has a docstring
ํ์ด์ฌ 7.3.7
์ซ์: 1.17.2
์ฌ๊ธฐ์ ์ง์ง ๋ฌธ์ ๋ NumPy๊ฐ ํ๋ก์ธ์ค์์ ๋ค์ ์ด๊ธฐํ๋๋ ๊ฒ์ ์ง์ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ 2012๋ ์ gh-665๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๊ตฌ์กฐ์ฒด์์ ์์ฑํ ๋ชจ๋ ์ ์ญ ์ํ๋ฅผ ์ฃผ์ ๊น๊ฒ ์บก์ฒํ๊ณ ๋ชจ๋์ getter๋ฅผ ํตํด ์ก์ธ์คํด์ผ ํฉ๋๋ค.
์ค, ๊ธ๋ก๋ฒ. ๊ทธ๊ฒ๋ค์ ํญ์ ์ฌ๋ฏธ์์ต๋๋ค.
numpy๋ฅผ numpy==1.15.4๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ํธ๋ฆญ์ด ๋ฐ์ํ์ต๋๋ค.
numpy๋ฅผ numpy==1.15.4๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ํธ๋ฆญ์ด ๋ฐ์ํ์ต๋๋ค.
์ด ๋ฒ์ ์ numpy(1.15.4)๋ pandas์ ๋ง๋
๋ฒ์ ์์ ์๋ํฉ๋๊น?
ํฌ๋ 1.0.3 =
ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C header, got 192 from PyObject
๋ค๋ฅธ ์ง๋ฌธ, ์ด ๋ฒ๊ทธ๊ฐ ๊ณง ์์ ๋ ๊ฒ ๊ฐ์ต๋๊น?
์ ๋ง ๊ณ ๋ง์.
๋ค๋ฅธ ์ง๋ฌธ, ์ด ๋ฒ๊ทธ๊ฐ ๊ณง ์์ ๋ ๊ฒ ๊ฐ์ต๋๊น?
"์ด ๋ฒ๊ทธ"๊ฐ numpy๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๊ฐ์ ธ์ฌ ์ ์์์ ์๋ฏธํ๋ ๊ฒฝ์ฐ ๋๋ต์ "์ฐ๋ฆฌ ๋ก๋๋งต์ ์์ต๋๋ค"์ ๋๋ค. ์ด๊ฒ์ ์คํ ์์ค์ด๋ฏ๋ก ๋๊ตฌ๋ ์ง ๊ทธ๊ฒ์ ๊ณ ์น๋ ๋ฐ ๊ธฐ์ฌํ ์ ์์ง๋ง ์ด๋ ๋ค์ ํฐ ์์ ์ด ๋ ๊ฒ์ ๋๋ค.
๊ฐ์ ธ์ค๊ธฐ ๊ฒฝ๊ณ ๋ง ์์ผ๋ฉด ๋ฌด์ํด๋ ๋ฉ๋๋ค. ํ์ง๋ง uwsgi๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์๋ฐ...
์ด๊ฒ์ด uwsgi๋ก ์ธํ ๊ฒ์ด๋ผ๋ฉด ์ง์ํ์ง ์์ ๊ฒ์ด๋ฉฐ ์ด์ ๋ํด ๋งค์ฐ ๋ง์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ฌ์ผ ํ๋ค๋ ๋ต๋ณ๋ง ์์ ๋ฟ์ ๋๋ค. ํ์ฌ ๋ชจ๋ ์ ์ ํ Python ์์๋ ์ด๋ฅผ ์ง์ํ์ง๋ ์์ต๋๋ค. ์ธ์ ๊ฐ๋ ์๋ํ ๊ฒ์ด๋ผ๋ ๋ง์ฐํ ํฌ๋ง์ ๊ฐ์ง๊ณ ์์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ์๊ฒ ์ด ์ผ์ ํด๋ฌ๋ผ๊ณ ์์ฒญํ๋ ๊ฒ์ ์๋ฌด๋ฐ๋ ๊ฐ์ง ์์ ๊ฒ์ ๋๋ค. ๋ฌผ๋ก , ์ํฉ์ ๊ฐ์ ํ๊ธฐ ์ํด ์๊ฐ๊ณผ ๋์ ํฌ์ํ ์ ์์ต๋๋ค. ํ์ํฉ๋๋ค. ํ์ง๋ง ํฌ๋ง์ ๊ฐ์ง์ง๋ ๋ง์ญ์์ค.
ํ์ด์ฌ์ ์ต์ข
ํจ๊ป ์์ ์ ์ผ์ ์ป๋๋ค ํ (์ด๊ฒ์ ๋ค์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค ๊ทธ๋ค์ ๋ช ๋
๋์์ด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค) ๊ฑฐ๊ธฐ์ ์ฝ๊ฐ์ ๊ด์ฌ์ด ๋ ์ ์์ผ๋ฉฐ ํฉ๋ฆฌ์ ์ผ๋ก ํฐ userbase๊ฐ๊ฐ ์์ต๋๋ค.
ํ์ฌ ์ฐ๋ฆฌ๋ wsgi๊ฐ ํ๋ ์ผ(ํ์ ์ธํฐํ๋ฆฌํฐ ์ฌ์ฉ)๊ณผ ๊ทผ๋ณธ์ ์ผ๋ก ํธํ๋์ง ์๋ ๊ณต๊ฐ API๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ ์๋ง๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ต์ ํ๋ ์บ์๊ฐ ์์ ์ ์์ผ๋ฉฐ Python ์ ์์ง ๋ง๋ค๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ด ์ค์ ์์ ๋น ๋ฅด๊ฒ .
์ฌ์ค wsgi๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ ์๋ธ ์ธํฐํ๋ฆฌํฐ๋ ํฉ๋ฆฌ์ ์ธ ํฌ๊ธฐ์ C ํ์ฅ ์์คํ ์์ ์ง์๋์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๊ฐ๊น์ด ์ฅ๋์ ์ผ์ด๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๊ตฐ๊ฐ ์ด๊ฒ์ NumPy ๋ก๋๋งต์ ์ค์ํ ๊ฒ์ผ๋ก ์๊ฐํ๊ฑฐ๋ ๊ธฐ๋ํ๋ค๋ฉด, ์ ์๊ฐ์๋ Python ๊ฐ๋ฐ์๊ฐ ์ ํธ๋ฅผ ์๋ชป ์๊ณ ์๋ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๊ทธ๋ค์ ์๋ธ ์ธํฐํ๋ฆฌํฐ๊ฐ ๋๋ค์์ C ํ์ฅ์์ ๋์ฐํ๊ฒ ์คํจํ๋ค๊ณ ๊ฐ์ ํด์ผ ํ๊ณ , ์๋ฌด๋ ์ํฉ์ด ์ค๊ธฐ(ํฅํ ๋ช ๋ )์ ๋ฐ๋ ๊ฒ์ด๋ผ๊ณ ์์ํด์๋ ์ ๋๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์คํ์ ์ด๋ผ๋ ๊ฒ์ ์๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๊ฒ์ C ํ์ฅ ์ง์์ ์จ๋ค.
์, ๋ง์ Python ํต์ฌ ๊ฐ๋ฐ์๊ฐ ์์ ์ ์๋์ํค๋ ๋ฐฉํฅ์ผ๋ก ํ๋ณตํ๊ฒ ์์ง์ด๊ณ ์์ง๋ง NumPy์ ๊ฐ์ ํ๋ก์ ํธ์ ๊ด์ ์์ ํ์ ์ธํฐํ๋ฆฌํฐ(wsgi ๊ธฐ๋ณธ๊ฐ)๋ฅผ ์ง์ํ๋ ๊ฒ์ ์ ์ฌ์ ์ธ ์ฌ์ฉ์์ ํ์ฌ ๋ชจ๋ ๊ฒ์ ์ ๋๋ก ์ง์ํ๋ ๊ธฐ์ ์กฐ์ฐจ ์์ต๋๋ค!
๊ทธ๋์, ์ด ํธ์ธ์ฅ๋ด ์ดํ์... ๋๊ตฐ๊ฐ NumPy๊ฐ (์๋ธ ์ธํฐํ๋ฆฌํฐ์ ํจ๊ป ๋ ์ ์๋ํ๋๋ก) ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ด๊ณ ์ ํ๋ค๋ฉด ์ด๊ฒ์ ๊ณ ๊ทํ ๋ ธ๋ ฅ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ํ๋ ธ๋ค๋ ๊ฒ์ด ์ฆ๋ช ๋์ด ๊ธฐ์ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์๋ธ ์ธํฐํ๋ฆฌํฐ(wsgi) ๊ฐ ์คํ์ ์ด๊ณ ๊ธฐ๋ฅ์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ด์ผ ํ๋ค๋ ์ ์ ๋์
์ด, ๋๋ ์ฐ๋ฆฌ๊ฐ (์์ง ์ด์จ๋ ) ์๋ธ ์ธํฐํ๋ฆฌํฐ์ ๋ํด ์ ๊ฒฝ ์ฐ์ง ์๋๋ค๋ ๋ฐ ์ ์ ์ผ๋ก ๋์ํ์ง๋ง ์ด๊ฒ์ ๋ ๊ฐ๋จํ ๋ฌธ์ ์
๋๋ค. 1.15.4์์ ์๋ํ์ผ๋ฉฐ Django, Spyder ๋ฑ์ ๋ณด๊ณ ์์๋ uwsgi
ํฌํจ๋์ง ์์ต๋๋ค. __array_function__
์ ๋
์คํธ๋ง ์ฒจ๋ถ ํ์ผ์ ๋น ๋ฅด๊ฒ ๋ณ๊ฒฝํ๊ฒ ์ต๋๋ค.
์ฌ์ค์ ๊ทธ๊ฒ๋ค์ ๋์ณค์ต๋๋ค. ๋๋ ๊ฑฐ๊ธฐ์ ๋ํด์๋ ๊ถ๊ธํ์ง๋ง ... ๊ทธ ๋งฅ๋ฝ์์ ์๋นํ ์์ ํด์ผํฉ๋๋ค. ๊ทธ๊ฒ์ ํฌ๋ง์ ์ผ๋ก๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ถํ๋ค๋ ์๋ฏธ์์. (์ต์ํ CPython์ด C-ํ์ฅ ๋ชจ๋์ด ๊ทธ๊ฒ์ ์์ ํ๊ฒ ๊ตฌํํ๋ค๊ณ ๋งํ๋ ๋ ๋ง์ ๊ธฐ๊ณ๋ฅผ ์ป์ ๋๊น์ง Spyder๊ฐ C-ํ์ฅ ๋ชจ๋์ ๊ฑด๋๋ฐ๋ฉด ์ ๋๋์ง ์ฝ๊ฐ ๊ถ๊ธํฉ๋๋ค... ๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ C-ํ์ฅ ๋ชจ๋์ด ๋ค์ ๋ก๋๋๋ ๊ฒฝ์ฐ ์๋ง ๊ฑฐ์ ์๋ฌด๊ฒ๋ ํ์ง ์์ ๊ฒ์ ๋๋ค).
๊ทธ๋ฐ ๋ค์์๋ ๋๋ถ๋ถ์ C ํ์ฅ ๋ชจ๋์ ๊ฒฝ์ฐ ์ฌ๋ก๋ฉ์ ๊ฑฐ์ ์๋ฌด ๊ฒ๋ ํ์ง ์์ต๋๋ค).
๊ทธ๊ฒ ํต์ฌ์ด ์๋ ๊ฒ ๊ฐ์์. reload(any_module)
๋ผ๊ณ ๋งํ๋ ๊ฒ์ด Python ํจํค์ง์ ์ผ๋ถ๋ก ์ปดํ์ผ๋ ํ์ฅ์ด ์๋์ง ํ์ธํ๊ธฐ ์ ์ ์์๋ด๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฝ์ต๋๋ค.
Django๊ฐ ์ ํํ ๋ฌด์์ ํ๋์ง๋ ํ์คํ์ง ์์ง๋ง ์๋ง๋ ๋น์ทํ ๊ฒ์ ๋๋ค.
๋๋ ๋น์ ์ ๋๋ฌด ๊ท์ฐฎ๊ฒํ๊ณ ์ถ์ง ์์์ต๋๋ค.
Flask์ Numpy๋ฅผ ์ฌ์ฉํ๋ ์น ์๋น์ค๊ฐ ์์ต๋๋ค. ์ ๋ง ๊ทธ๋ฐ ๊ฒ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
Flask์ ํฌํจ๋ ๊ฐ๋ฐ ์๋ฒ(ํ์คํ Werkzeug)์๋ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ํ๋ก๋์ ์์๋ Python3์ฉ apache2 WSGI ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๋ก๋(์ฌ๋ฌ ์ค๋ ๋)๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
์ด๋ ค ์์ต๋๋ค. ๋ฌด์์ ์ฌ์ฉํด์ผ ํ๋์ง ์๋ ค์ฃผ์ธ์.
๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค.
ํ์ ์ธํฐํ๋ฆฌํฐ ๋จ๋ฝ์ ๋ชจ๋ ๋ด์ฉ์ NumPy์ ๊ด๋ จํ์ฌ ๊ฑด์ ํ ์กฐ์ธ์ด์ด์ผ ํฉ๋๋ค. ๋๋ ์น ์๋น์ค์ ์ด๋ค ๊ฒ์ด ํจ๊ณผ๊ฐ ์์์ง์ ๋ํด ์ด๋ค ์กฐ์ธ๋ ํ ์ ์์ง๋ง ์ด ์ค๋ ๋์ ๋ค๋ฅธ ๋๊ตฐ๊ฐ๋ ํ ์ ์์ต๋๋ค.
์ํฉ์ ์กฐ๊ธ ๋ ์ข๊ฒ ๋ง๋๋ ๊ฒ์ด ์ข์ ์๋ ์์ง๋ง(๊ทธ๋ฆฌ๊ณ ์ผ๋ถ๋ ๋์์ด ๋ ์ ์์) ๊ฐ๊น์ด ์ฅ๋์ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ ๊ฒ์ด๋ผ๋ ์ ์ ๋ถ๋ช ํ ํ๊ณ ์ถ์์ต๋๋ค. ์ด์จ๋ ์ฐ๋ฆฌ๋ ์ด ์คํจ๋ฅผ ์ ๊ฑฐํ๋ ค๊ณ ์๋ํ ์ ์์ง๋ง ๋์ ๋๋ฒ๊ทธํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์๋ค๋ ํฐ ๊ฒฝ๊ณ ๋ฅผ ์ค ๊ฒ์ ๋๋ค.
์ด์ ์ ์ธ๊ธ๋์ง ์์ ๊ฒ์ฒ๋ผ ๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋ ์ ์์ต๋๋ค.
๋๋ uwsgi (Nginx์ ํจ๊ป)๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ " single-interpreter = true " ini config(๋๋ --single-interpreter ์ค์์น) ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค .
์ฌ๊ธฐ ์์ ์ด ํ๋๊ทธ์ ๋ํ ์ค๋ช ์ ์ฐพ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก uWSGI๋ Python์ด ์ฒ์ ์ด๊ธฐํ๋ ๋ ์์ฑ๋ ๊ธฐ๋ณธ Python ์ธํฐํ๋ฆฌํฐ๊ฐ ์๋ ํ๋ก์ธ์ค์ ํ์ ์ธํฐํ๋ฆฌํฐ ๋ด์์ Python ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. ์ด๊ฒ์ ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ณ Python ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์์ง๋ง ์๋ก ๊ฐ์ญํ์ง ์๋๋ก ์ถฉ๋ถํ ๋ถ๋ฆฌ๋๋๋ก ์ํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ ๋ฉ์ด ํ์ฑํ๋ ํ์ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ ๋ ์ด์ ๋ฒ์ ์ uWSGI๊ฐ ์คํจํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ์ต์ ์ ์ฌ์ฉํ๊ณ ํ๋ก์ธ์ค๋น ๋จ์ผ ์น ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ํํ๋ ๊ฒ์ด ๊ฐ์ฅ ์์ ํฉ๋๋ค. uWSGI๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํ๋ก์ธ์ค์์ ๋จ์ผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ด๋ฏ๋ก ์ด ์ ํ์ด ๋ฌธ์ ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ด ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ uwsgi๋ก ์ ํํ๊ฑฐ๋ ํ๊ฒฝ์ ์ ์ฌํ ๊ฒ์ ์ฐพ์ ์ ์์ต๋๋ค.
์์ /ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค์ ๋ก ๋ณํฉํ ๋๊น์ง ๋ค์ ์ด ์์ ์ ๋๋ค. ๊ณง ์ ๊ณต๋ ์์ ์ ๋๋ค.
์ด์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ฐ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ ์ ์์์ต๋๋ค. ์๋ฃ๋ฅผ ์ํด ์ฌ๊ธฐ์ ๋ด ์์ธ์ด ์์ต๋๋ค. Numpy ๋ด๋ถ์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฎ์ด์ฐ๋ logger.py๋ผ๋ ๋ก๊ฑฐ ๋ชจ๋์ด ์์ต๋๋ค. ๋ชจ๋ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋๋ฐ ์ค๋ฅ๊ฐ ์์ต๋๋ค. ์๋ง๋ ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ ์ด ๋๊ธ์ ๋ณด๊ณ ๋น์ทํ ์ผ์ด ๊ทธ๋ค์๊ฒ ์ผ์ด๋๊ณ ์๋ค๋ ๊ฒ์ ์์์ฐจ๋ฆด ๊ฒ์ ๋๋ค.
1.19์ ๋ํ ์์ ์ฌํญ์ ํธ์ํ์ต๋๋ค. ๋๋ ์ค๋ฅ๊ฐ ์ฌ์ ํ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ ์ผ์ด ์งํ ์ค์์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ ์คํ๋ ค ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค.
@seberg 1.19์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด๊ฒ์ ๋ซ์์ผ ํฉ๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
numpy๋ฅผ numpy==1.15.4๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ํธ๋ฆญ์ด ๋ฐ์ํ์ต๋๋ค.