Ipython: ipython ๋…ธํŠธ๋ถ์šฉ ์†Œ์ผ“ ์˜ค๋ฅ˜ 99

์— ๋งŒ๋“  2014๋…„ 07์›” 23์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ipython/ipython

์•ˆ๋…•ํ•˜์„ธ์š”
๋…ธํŠธ๋ถ์„ ์—ด๋ ค๊ณ  ํ•  ๋•Œ ์†Œ์ผ“ ์˜ค๋ฅ˜ 99 "์š”์ฒญํ•œ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Ipython์ด 2.1.0-62์—์„œ 2.1.0-63(SuSE ํŒจํ‚ค์ง€)์œผ๋กœ๋งŒ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์ง€๋งŒ ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ ํ›„์— ๋ฐœ์ƒํ–ˆ์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฃจํ”„๋ฐฑ ์žฅ์น˜๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ(inet addr:127.0.0.1 Mask:255.0.0.0 ํฌํ•จ)
  2. ํ‘œ์ค€ ํฌํŠธ๊ฐ€ ์ด๋ฏธ ํ• ๋‹น๋œ ๊ฒฝ์šฐ netstat -lp๋กœ ํ™•์ธ(์•„์ง ํ• ๋‹น๋˜์ง€ ์•Š์Œ)
  3. ์ž‘์€ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํฌํŠธ 8888์—์„œ ํ† ๋„ค์ด๋„ ์›น ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
  4. ๊ธฐ๋ณธ ํ”„๋กœํ•„์„ ๋งŒ๋“ค๊ณ  ipython์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.
  5. ๋ช…์‹œ์  ํ˜ธ์ŠคํŠธ ๋ฐ (์ž„์˜) ํฌํŠธ๋กœ ipython ์‹œ์ž‘(ipython notebook --init --ip='localhost' --port=49151)
  6. ์‹œ๋„๋Š” ๋ฃจํŠธ์ž…๋‹ˆ๋‹ค.
  7. ๋ฐฉํ™”๋ฒฝ์ด ์ฐจ๋‹จ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  8. tmp์— ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค(ํ•„์š”ํ•œ ๊ฒฝ์šฐ).

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๋” ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์žƒ์–ด ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ชจ๋“  ํฌ์ธํ„ฐ๋ฅผ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ ๋ฉ”์‹œ์ง€๋Š”
tmp/> ipython ๋…ธํŠธ๋ถ --init --log-level=50 --ip='localhost' --port=49151 [15:46:39]
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "/usr/bin/ipython", 5ํ–‰,
์‹œ์ž‘_์•„์ดํŒŒ์ด์ฌ()
start_ipython์—์„œ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/ ์ดˆ๊ธฐํ™” ํ‰", ๋ผ์ธ (120)
๋ฐ˜ํ™˜ launch_new_instance(argv=argv, _kwargs)launch_instance์˜ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/config/application.py", 563ํ–‰์•ฑ ์ดˆ๊ธฐํ™”(argv)ํŒŒ์ผ "", 2ํ–‰, ์ดˆ๊ธฐํ™” ์ค‘catch_config_error์˜ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/config/application.py", 92ํ–‰๋ฐ˜ํ™˜ ๋ฐฉ๋ฒ•(์•ฑ, *args, *_kwargs)ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py", 320ํ–‰, ์ดˆ๊ธฐํ™” ์ค‘super(ํ„ฐ๋ฏธ๋„IPythonApp, self).initialize(argv)ํŒŒ์ผ "", 2ํ–‰, ์ดˆ๊ธฐํ™” ์ค‘catch_config_error์˜ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/config/application.py", 92ํ–‰๋ฐ˜ํ™˜ ๋ฐฉ๋ฒ•(์•ฑ, _args, *_kwargs)ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/core/application.py", 381ํ–‰, ์ดˆ๊ธฐํ™” ์ค‘self.parse_command_line(argv)ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py", 315ํ–‰, parse_command_line๋ฐ˜ํ™˜ super(TerminalIPythonApp, self).parse_command_line(argv)ํŒŒ์ผ "", 2ํ–‰, parse_command_linecatch_config_error์˜ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/config/application.py", 92ํ–‰๋ฐ˜ํ™˜ ๋ฐฉ๋ฒ•(์•ฑ, _args, *_kwargs)parse_command_line์˜ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/config/application.py", 475ํ–‰๋ฐ˜ํ™˜ self.initialize_subcommand(subc, subargv)ํŒŒ์ผ "", 2๋ฒˆ์งธ ์ค„, initialize_subcommandcatch_config_error์˜ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/config/application.py", 92ํ–‰๋ฐ˜ํ™˜ ๋ฐฉ๋ฒ•(์•ฑ, _args, *_kwargs)initialize_subcommand์˜ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/config/application.py", 413ํ–‰self.subapp.initialize(argv)ํŒŒ์ผ "", 2ํ–‰, ์ดˆ๊ธฐํ™” ์ค‘catch_config_error์˜ ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/config/application.py", 92ํ–‰๋ฐ˜ํ™˜ ๋ฐฉ๋ฒ•(์•ฑ, _args, *_kwargs)ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py", 745ํ–‰, ์ดˆ๊ธฐํ™” ์ค‘self.init_webapp()ํŒŒ์ผ "/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py", ์ค„ 632, init_webappself.http_server.listen(ํฌํŠธ, self.ip)ํŒŒ์ผ "/usr/lib64/python2.7/site-packages/tornado/tcpserver.py", 116ํ–‰, ์ˆ˜์‹ ์†Œ์ผ“ = bind_sockets(ํฌํŠธ, ์ฃผ์†Œ=์ฃผ์†Œ)bind_sockets์˜ ํŒŒ์ผ "/usr/lib64/python2.7/site-packages/tornado/netutil.py", 103ํ–‰sock.bind(sockaddr)ํŒŒ์ผ "/usr/lib64/python2.7/socket.py", 224ํ–‰, meth๋ฐ˜ํ™˜ getattr(self._sock, ์ด๋ฆ„)( ์ธ์ˆ˜)
์˜ค๋ฅ˜: [Errno 99] ์š”์ฒญํ•œ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์€
{'์ปค๋ฐ‹_ํ•ด์‹œ': '681fd77',
'commit_source': '์„ค์น˜',
'default_encoding': 'UTF-8',
'ipython_path': '/usr/lib/python2.7/site-packages/IPython',
'ipython_version': '2.1.0',
'os_name': 'posix',
'ํ”Œ๋žซํผ': '๋ฆฌ๋ˆ…์Šค-3.11.10-17-default-x86_64-with-SuSE-13.1-x86_64',
'sys_executable': '/usr/bin/python',
'sys_platform': 'linux2',
'sys_version': '2.7.6(๊ธฐ๋ณธ๊ฐ’, 2013๋…„ 11์›” 21์ผ, 15:55:38) [GCC]'}

๋‚ด ํ† ๋„ค์ด๋„ ๋ฒ„์ „์€
์ด๋ฆ„: python-tornado/๋ฒ„์ „: 3.2.1-2.1/์•„์น˜: x86_64

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

--ip=127.0.0.1 ๋ฅผ) ์‹œ๋„ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

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

--ip=127.0.0.1 ๋ฅผ) ์‹œ๋„ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

์•ˆ๋…•ํ•˜์„ธ์š”

๊ทธ๊ฒƒ์€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (๊ทธ๊ฒƒ์„ ์ƒ๊ฐํ–ˆ์–ด์•ผ ํ•จ). ๋‚ด ipython_notebook_config.py์— ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ํ–‰๋™์ด ๋ฐ”๋€ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค...
๊ทธ๋ž˜์„œ ๋‚ด ์ชฝ์—์„œ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์†”๋ฃจ์…˜์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์˜๋ฏธ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ์—ด์–ด๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๊ฐ€ ๋„ˆ๋ฌด ๊ตฌ์ฒด์ ์ผ ์ˆ˜๋„...

๋น ๋ฅธ ๋‹ต๋ณ€ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

#6191์˜ ์„ค๋ช… ๋ณต์‚ฌ:

IPython์€ ๊ธฐ๋ณธ์ ์œผ๋กœ localhost์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. 127.0.0.1์€ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ด์•ผ ํ•˜๋ฉฐ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ถ€ ๊ฒฝ์šฐ์—๋Š” ๋กœ์ปฌ ํ”„๋ก์‹œ ๋ฐ/๋˜๋Š” ๋ฐฉํ™”๋ฒฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ž‘์˜ ์˜๋„์ ์ธ ์ฐจ์ด๊ฐ€ ์•„๋‹ˆ๋ผ ๊ตฌ์„ฑ ๊ฐ๋…์œผ๋กœ ์ธํ•œ ๊ฒƒ์ž„). ์šฐ๋ฆฌ๋Š” localhost๊ฐ€ ์ž‘๋™ํ•˜๊ณ  127์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์™€ ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•˜์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ •๋‹ต์€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐฉํ™”๋ฒฝ ๋ฐ/๋˜๋Š” ํ”„๋ก์‹œ ๊ตฌ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๊ตฌ์„ฑ์„ ์ œ์–ดํ•ฉ๋‹ˆ๊นŒ? ์ด ๋™์ž‘์„ ๋„คํŠธ์›Œํฌ ์„ค์ •์˜ ๋ฒ„๊ทธ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ˆ˜์ •ํ•  ๊ถŒํ•œ์ด ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. 127.0.0.1์„ ์ง€์ •ํ•˜๋ฉด ์†Œ์ผ“ ์˜ค๋ฅ˜๋„ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ --ip=0.0.0.0 ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์— ๋…ธํŠธ๋ถ ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ˆ˜์‹  IP๋ฅผ "0.0.0.0"์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๊ณ ๋งˆ์›Œ, ๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค :)

๋•๋ถ„์— ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค!

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ ์˜ค๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ฒฝ์šฐ: /etc/hosts ์—์„œ ์˜คํƒ€ ๋ฐ ipv6 ๊ตฌ์„ฑ์„ ํ™•์ธํ•˜์„ธ์š”. localhost ํ•ด์•ผ IPv4์˜ ๋ฃจํ”„๋ฐฑ (ํฌ์ธํŠธ ๋งŒ 127.0.0.1 )์— IPv6๋ฅผํ•˜์ง€ ( ::1 ). ์ด๊ฒƒ์€ jupyter๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์„ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค:
::1 localhost6 localhost6.localdomain6

https://github.com/codenvy/codenvy/issues/2427#issuecomment -397347888
https://bugzilla.redhat.com/show_bug.cgi?id=211800#c4

@mlazowik ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๊ฒƒ์€ ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ 127.0.0.1 ์†”๋ฃจ์…˜์„ ์„ ํƒํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์กฐํšŒ ํ…Œ์ด๋ธ”์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ). ๋‚ด ์ธ์Šคํ„ด์Šค(Arch Linux)์—์„œ ๋‚ด /etc/hosts ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด "๋ฐฐ์†ก"๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

127.0.0.1       localhost.localdomain    localhost
::1             localhost.localdomain    localhost

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

127.0.0.1       localhost.localdomain    localhost
::1             localhost6.localdomain6  localhost6

ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ --ip=0.0.0.0 ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด (Mac์—์„œ) --ip=0.0.0.0 ๋งŒ ๋กœ์ปฌ ์‹คํ–‰ ๋„์ปค๋ฅผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” IPv6์—์„œ ์ค‘๋ณต๋œ ::1 ๋ฃจํ”„๋ฐฑ ์ฃผ์†Œ์— ๋Œ€ํ•œ /etc/hosts ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ๋ฃจํ”„๋ฐฑ ์ฃผ์†Œ ::1์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

Screenshot from 2019-12-14 16-32-13

@mlazowik ๋™์ผํ•œ ์ตœ์ข… ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ man /etc/hosts ์ด ์˜ˆ์ œ์— ์ด๊ฒƒ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กญ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ):

# The following lines are desirable for IPv4 capable hosts
127.0.0.1       localhost
127.0.1.1       thishost.mydomain.org  thishost

[...]

# The following lines are desirable for IPv6 capable hosts
::1             localhost ip6-localhost ip6-loopback

๋‚˜๋Š” ๋–จ์–ด์กŒ๋‹ค localhost ๋กœ๋ถ€ํ„ฐ ::1 ํ•ญ๋ชฉ (๋‹ค๋ฅธ ๋‘๋ฅผ ์œ ์ง€ํ•˜๋Š”) ๋ชจ๋“  ์ข‹์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ip6 ๊ฐ€ ipv6 ํ‚ค์›Œ๋“œ๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์ง€๋งŒ ์•„๋งˆ๋„ ip6-foo ๋ฐ foo6 ๋ชจ๋‘ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ด๋ฆ„ ๋งน๊ธ€๋ง๊ณผ ipv4 ์ƒ๋‹น)?

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