å
ã®Launchpadãã°399627ïŒ https ïŒ//bugs.launchpad.net/ipython/+bug/399627
å ±åè
ïŒh-fangohrïŒHans FangohrïŒã
ãšã©ãŒã¯æ¬¡ã®ããã«åçŸã§ããŸãã
fangohr<strong i="11">@eta</strong>:~$ python
Python 2.4.3 (#1, Jun 8 2009, 14:09:06)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from IPython.Shell import IPShellEmbed
>>> ipshell=IPShellEmbed()
>>> ipshell()
éå§ããã°ããã®ipythonã»ãã·ã§ã³å ã§ãã°ããŒãã«å€æ°ã衚瀺ãããªãå ŽåããããŸãã 2ã€ã®äŸã¯æ¬¡ã®ãšããã§ãã
äŸ1ïŒ
In [1]: a=1
In [2]: def f(x):
...: return a*x
...:
In [3]: f(2)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/home/fangohr/<ipython console>
/home/fangohr/<ipython console> in f(x)
NameError: global name 'a' is not defined
äŸ2ïŒ
In [4]: b=1
In [5]: (lambda :b)()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/home/fangohr/<ipython console>
/home/fangohr/<ipython console> in <lambda>()
NameError: global name 'b' is not defined
ã¹ã¯ãªããã«ãb = 1;ïŒlambdaïŒbïŒïŒïŒããå ¥ããŠããšã©ãŒã¯ãªãããã®ã¹ã¯ãªããã¯ipythonã®ãrunãã³ãã³ãã䜿çšããŠå®è¡ãããŸãã
ipythonãèµ·åããåŸããb = 1;ïŒlambdaïŒbïŒïŒïŒããã€ã³ã¿ã©ã¯ãã£ãã«å®è¡ããŠããšã©ãŒã¯çºçããŸããã
ãšã©ãŒãçºçããå¯äžã®æ¹æ³ã¯ãåã蟌ã¿IPythonã·ã§ã«ãPythonããã³ããããéå§ãããã³ãã³ããããã³ããã§ã€ã³ã¿ã©ã¯ãã£ãã«å®è¡ãããå Žåã§ãã
ipython-0.9.1ïŒpython2.4ã䜿çšïŒãè©Šãããšãã«åããšã©ãŒãèŠã€ãããŸããã
ãã®ãã°ã¯ãOlivier Kleinã«ãã£ãŠnmagããŒã ïŒhttp://nmag.soton.ac.ukïŒã«å ±åãããŸããã
[LPã³ã¡ã³ã1ïŒãã§ã«ãã³ããã¬ã¹ã2010-04-25 23ïŒ36ïŒ38.673176 + 00ïŒ00]
OKãåé¡ã¯ç¢ºèªã§ããŸããïŒãã©ã³ã¯ã§ãïŒãé£ããã§ãã ä»ã®ãšããããã®ãã°ã確èªãããŠããããšã確èªããŠããã®ã§ã远跡ãç¶ããŠããŸãããä¿®æ£æ¹æ³ãããããŸããã
åé¡ã¯ãåã蟌ã¿ã·ã§ã«ã§ã¯ãåšå²ã®ã¹ã³ãŒãã䜿çšããããã«ã°ããŒãã«åå空éãæŽæ°ããããšããããšã§ãïŒãããåã蟌ã¿ã·ã§ã«ã®ãã€ã³ãã§ãããåšå²ã®ç¶æ³ã確èªã§ããŸãïŒã ãã ããããã«ããããã¹ãããããã®ïŒããŒã«ã«é¢æ°ãªã©ïŒãå®çŸ©ãããŠããå ŽåãPythonã¯ipythonã€ã³ã¿ã©ã¯ãã£ãåå空éã®è§£æ±ºã«å€±æããŸãã 詳现ã«ã€ããŠã¯ãçµã¿èŸŒã¿ã·ã§ã«ã®mainloopïŒïŒã¡ãœãããåç §ããŠãã ããã
ç§ã¯ãããä¿®æ£ããæ¹æ³ã«ã€ããŠãã£ãšãã£ãšèããå¿ èŠããããŸããã©ããªã¢ã€ãã¢ã倧æè¿ã§ãã
ã©ã³ããããã§...
ChairmanKã¯20æéåã«æžããïŒ
ç§ãã é¢æ°ã«å ããŠããã®ãã°ã¯ãžã§ãã¬ãŒã¿åŒã«ãçŸããŸãã
ãã©ã³ã¯å ã®åçã®ã³ã³ããŒãã³ãã¯ãIPython.frontend.terminal.InteractiveShellEmbedã®ããã§ãã ããããããã¯ä»ã®æ¹æ³ã§å£ããŠãããæããã«ããŸããã¹ããããŠããŸããã 誰ãããã®æªæ¥ãäœã§ãããç¥ã£ãŠããŸããïŒ
ããã¯ïŒ136ãšåãåé¡ã§ããããïŒ
ããã¯ä¿®æ£ãããŸããïŒ
amirbar[ipython]> python
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from IPython import embed
>>> embed()
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
Type "copyright", "credits" or "license" for more information.
IPython 0.12.dev -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: a = 1
In [2]: def f(x):
...: return a*x
...:
In [3]: f(3)
Out[3]: 3
In [4]: b = 1
In [5]: (lambda : b)()
Out[5]: 1
In [6]:
誰ããããã®ä¿®æ£ã«äœãå ¥ã£ãã®ãããå°ã説æã§ããŸããïŒ ããã§ãåé¡ãçºçããŸãããã¡ãœããåŒã³åºãã«ãã£ãŠ1ã€ã®ã¬ã€ã€ãŒãåé€ãããå Žåã«ã®ã¿ãã€ã³ã¿ã©ã¯ãã£ãã§ã¯ãªãã¹ã¯ãªããããå®è¡ããå Žåã«éããŸãã
OSX10.6.8äžã®python2.7.2ãipython 0.11ããã³0.12ã¯ã©ã¡ããåæ§ã®åäœã瀺ããŸãïŒãã®ã³ã¡ã³ãã«ã¯0.12ã䜿çšïŒ
ããã¯ãåã蟌ãŸããIPythonã·ã§ã«ãïŒç®ç«ã€ããã«ïŒåããŠãããããžã§ã¯ãã®åé¡ã§ãã
testembed.py
from IPython import embed
def hi():
embed()
if __name__ == '__main__':
#embed()
hi()
python testembed.py
ã䜿çšããŠã³ãã³ãã©ã€ã³ã§ãããå®è¡ãã次ã®ã»ãã·ã§ã³ã確èªããŸãã
Python 2.7.2 (default, Aug 29 2011, 12:33:18)
Type "copyright", "credits" or "license" for more information.
IPython 0.12 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import time
In [2]: def tim():
...: print time.time()
...:
In [3]: tim()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
[snip] in <module>()
----> 1 tim()
[snip] in tim()
1 def tim():
----> 2 print time.time()
3
NameError: global name 'time' is not defined
In [4]:
ãã ãã hi()
ãžã®åŒã³åºããã³ã¡ã³ãã¢ãŠããã embed()
åŒã³åºãã«çœ®ãæããŸãã
Python 2.7.2 (default, Aug 29 2011, 12:33:18)
Type "copyright", "credits" or "license" for more information.
IPython 0.12 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import time
In [2]: def tim():
print time.time()
...:
In [3]: tim()
1328639444.29
In [4]:
çªã£èŸŒãã åŸãããã§äœ¿çšãããŠããstack_depth
ãã©ã¡ãŒã¿ãŒãšãã®ãããã¯ã«é¢ä¿ããŠãããšæããŸãïŒ https ïŒ
èãïŒ
ããã¯ããè€éã§ãããPythonèªäœã®å¶éã ãšæããŸãã
衚瀺ãããŠãã倱æããã±ãŒã¹ã§ã¯ã time
ã¯å®éã«ã¯ã°ããŒãã«åå空éã«é
眮ãããŸããã hi
é¢æ°å
ã§embed
ãåŒã³åºãããããã€ã³ã¿ã©ã¯ãã£ãã«äœæããæ°ããå€æ°ã¯ããã«ããŒã«ã«ã§ããé¢æ°ã çæ³çã«ã¯ã tim()
ã¯ã¯ããŒãžã£ãŒãšããŠæ©èœããæéã¢ãžã¥ãŒã«ãžã®åç
§ãéããŸãã ãã ããã¯ããŒãžã£ã¯ãå«ãŸããŠããé¢æ°ãäžåºŠã«ã³ã³ãã€ã«ãããå Žåã«ã®ã¿æ©èœããããã«èŠããŸãã ç§ã®ç¥ãéããã¯ããŒãžã£ãåçã«å®çŸ©ããæ¹æ³ã¯ãããŸããã ãã®ç°¡åãªäŸã¯å€±æããŸãïŒ
def outer():
import time
exec("def inner(): return time.time()")
return inner
outer()()
ããã¯ããããããã¹ããããã¹ã³ãŒããPythonã«æ¯èŒçé ããŠè¿œå ãããããã§ãïŒ2.1ã§ã¯å°æ¥ã®ã€ã³ããŒãã§ããã2.2ã§ã¯åžžã«ãªã³ã§ããïŒã
ã¯ããããããŸããã ã€ã³ã¿ã©ã¯ãã£ãã«æžã蟌ãã ãã®ããã¡ã€ã«ã«ãã³ãããŠãããã®ãã¡ã€ã«ãèªã¿æ»ã以å€ã¯ãããã«ã€ããŠå®éã«ã¯äœãã§ããªãããã§ãããããããã€ã³ã¿ã©ã¯ãã£ãã«å®è¡ãããããšã«ã¯è€éãããŸãã
ããããšãããšããã§ã
ããã§ããŒããç¶ããŠç³ãèš³ãããŸããããããã¯ã€ã³ã¿ã©ã¯ãã£ãã»ãã·ã§ã³ãéåžžã«äžæ Œå¥œã«æããããã ãã§ãïŒ
éåžžã®PythonïŒ
>>> d={'one':1, 'two':2}
>>> getkeys=lambda: d.keys()
>>> getkeys()
['two', 'one']
éåžžã®IPythonïŒ
In [1]: d={'one':1, 'two':2}
In [2]: getkeys=lambda: d.keys()
In [3]: getkeys()
Out[3]: ['two', 'one']
çµã¿èŸŒã¿IPythonïŒ
>>> from IPython import embed
>>> embed()
Python 2.7.2 (default, Aug 29 2011, 12:33:18)
Type "copyright", "credits" or "license" for more information.
IPython 0.12.dev -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: d={'one':1, 'two':2}
In [2]: getkeys=lambda: d.keys()
In [3]: getkeys()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/Users/asadeveloper/Documents/Dev/code/pyon/bin/python in <module>()
----> 1 getkeys()
/Users/asadeveloper/Documents/Dev/code/pyon/bin/python in <lambda>()
----> 1 getkeys=lambda: d.keys()
NameError: global name 'd' is not defined
ã§ããããšã¯ããŸããªããšæããŸãããéåžžã®python / ipythonã§åçã¯ããŒãžã£ãŒãäœæã§ããã®ã«ãçµã¿èŸŒã¿ããŒãžã§ã³ã§ã¯äœæã§ããªãçç±ãããããŸããã
Pythonã¹ã³ãŒãã®å¥åŠãªç¹ã«ãããæšæºã®Python / IPythonã§ã¯ãå®éã«ã¯ã¯ããŒãžã£ãäœæããŠããŸããã d
ã¯ã°ããŒãã«å€æ°ã§ããããããã«ã¢ã¯ã»ã¹ããããã®ã«ãŒã«ã¯ã¯ããŒãžã£ãšã¯ç°ãªãåããããŸãã åé¢æ°ã¯ããããå®çŸ©ãããã°ããŒãã«åå空éïŒ getkeys.func_globals
ïŒãžã®åç
§ãä¿æãããããããã§å®çŸ©ãããä»»æã®å€æ°ã«ã¢ã¯ã»ã¹ã§ããŸãã
å¯Ÿç §çã«ãã¯ããŒãžã£ãäœæãããšãPythonã¯ãã³ã³ãã€ã©ã«ãã£ãŠæ±ºå®ãããããã«ãã¯ããŒãžã£ãéããããåå€æ°ãžã®åç §ãæ·»ä»ããŸãããããã¯ãå éšé¢æ°ãšå€éšé¢æ°ãåæã«ã³ã³ãã€ã«ãããå Žåã«ã®ã¿æ©èœããŸãã 次ã®ããã«ãªããŸãã
In [8]: def outer():
a = 1
def inner():
return a
return inner
...:
In [9]: f = outer()
In [10]: f
Out[10]: <function __main__.inner>
In [11]: f.func_closure
Out[11]: (<cell at 0x9f5e344: int object at 0x9a830b0>,)
ããã¯ãã¡ã¢ãªãç¯çŽããããã«è¡ãããå¯èœæ§ããããŸããã¯ããŒãžã£ãå®çŸ©ãããããŒã«ã«ã¹ã³ãŒããžã®åç §ãæã£ãŠããå Žåãã¯ããŒãžã£ãæå¹ãªéã¯ããã®ã¹ã³ãŒãã®å€æ°ã解æŸã§ããŸããã§ããã
OSX10.7.3ã§Python2.7.2ãšIPython0.12.1ã䜿çšããŠããŸããããŸã ãã®åé¡ãçºçããŠããŸãã IPython.embed()
ãåŒã³åºãDjangoã®./manage.py shell
ãå®è¡ãããšãåé¡ãçºçããŸãã ãã ããPythonã·ã§ã«ãŸãã¯åçŽãªã¹ã¯ãªãããã¡ã€ã«ããæåã§embed()
ãåŒã³åºãå Žåã¯ãåé¡ã¯ãããŸããã
ããã«ã€ããŠçŽæ¥ã§ããããšã¯å€ããããŸããããéèŠãªçšéã®ããã«ããµãŒãããŒãã£ã«embed
ããé¢ããããã«å§ããå¿
èŠããããŸãã
@takluyverãã®å ŽåãipythonãçŽæ¥äœ¿çšããæ¹ãè¯ããšããããšã§ããïŒ
Djangoããã®åé¡ãåŒãèµ·ãããªãæ¹æ³ã§IPythonãèµ·åããããšã¯å¯èœã§ãããããã¯çŸåšç§ãã¡ãç°¡åã«ããŠããæ¹æ³ã§ã¯ãããŸããã ãã®åé¡ã¯ãIPythonãåå¥ã®ããŒã«ã«åå空éãšã°ããŒãã«åå空éã§éå§ãããšãã«çºçããŸãã Djangoãåå¥ã®ããŒã«ã«åå空éãšã°ããŒãã«åå空éãå¿
èŠãšããçç±ã¯ãããŸããããé¢æ°å
ã§embed()
ãåŒã³åºãããšã¯ãããæå³ããããšã§ãã
åèãŸã§ã«ãDjangoã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
https://code.djangoproject.com/browser/django/trunk/django/core/management/commands/shell.py
@takluyverããã¯çã«ããªã£ãŠããŸããããããšãïŒ ãã®ããã«Djangoãã±ãããéããŠããŸãã
@ takluyver ãembed_kernelãããŒãžããŠãã¹ãŠã®äž»èŠéšåãé 眮ãããã®ã§ããããå°ãã¯ãªãŒã³ã¢ããããŠã䜿çšãå°ã埮調æŽããããããŸããïŒ
ã©ã®ã€ã³ã¿ãŒãã§ãŒã¹ãæãçã«ããªã£ãŠããã®ããèŠãŠãããŸãã
ç§ã¯ãŸã ãã®åé¡ã§åé¡ãæ±ããŠããŸãã ç§ã¯ãããåŒãèµ·ãããŠãããã®ãæ£ç¢ºã«çµã蟌ãã§ã¿ãŸããããããŠç§ãå€æã§ããæåã®ããšã¯ãããUbuntu12.04ã§ã®ã¿èµ·ãããšããããšã§ãã ä»ã®ãµãŒããŒã§ææ°ãªãªãŒã¹ããŒãžã§ã³ããã¹ãŠè©ŠããŸããããæ£åžžã«åäœããŸãã ããããipythonã§é¢æ°ãå®çŸ©ããããïŒ cpasteã䜿çšããŠå¥ã®ãã¡ã€ã«ããé¢æ°ã貌ãä»ãããšããã®é¢æ°ã®å éšã¯ã°ããŒãã«ã¹ã³ãŒãã«ã¢ã¯ã»ã¹ã§ããªããªããŸãã ããã¯åºæ¬çã«ããã®å Žã§é¢æ°ãæžããšããç¹ã§æçšãªããšãããããšãäžå¯èœã«ããŸãã
ä»ã®ããŒã«ïŒDjangoã®debugsqlshellã³ãã³ããªã©ïŒããåŒã³åºãããå ŽåãIPython0.13ã§ãã®åé¡ãçºçããŸãã é¢æ°ãå®çŸ©ããã®ãšåããããåºæ¬çãªããšãå®å šã«å£ããŠããã®ã¯éåžžã«ã€ã©ã€ã©ããŸãã
embedïŒïŒã¯ã䜿çšãããŠãŒã¶ãŒã«ãšã£ãŠééã£ãã€ã³ã¿ãŒãã§ã€ã¹ã ãšæããŸãã embedïŒïŒã¯
å®è¡äžã®ããã°ã©ã ã®ç¶æ
ã調ã¹ãããšãç®çãšããŠããããã
ããŒã«ã«åå空éãšã°ããŒãã«åå空éãåé¢ããŸãã ãã®åé¡ãåé¿ããã«ã¯ãipython
åäžã®ã€ã³ã¿ãŒãã§ãŒã¹ã§éå§ããå¿
èŠããããŸãã ãã¿ãŸãããæéããããŸããã§ãã
ãããè¡ãããã®æè¯ã®æ¹æ³ãäœã§ããããèãåºããŸãã
Ubuntuã ãã§ã¯ãããŸããã debianwheezyãããã瀺ããŠããŸãã
FYIãDjangoã®ãã±ãã@liokmã¯ãäžèšã§äœæããhttps://code.djangoproject.com/ticket/18204ä»ãæããŠããã https://code.djangoproject.com/ticket/17078ãã©ã³ã¯ã«åºå®ãããŠããããã«æããã ã 1.5ã§çéžããã¯ãã§ãã
Ipython0.13.2ã䜿çšããUbuntuã§åãåé¡ãçºçããŠããŸã
django1.6ã§ä¿®æ£ããã
ãããã1.6ã¯ãŸã å®å®ããŠããŸããïŒ
ãããã1.6ã¯ãŸã å®å®ããŠããŸããïŒ
ãœãããŠã§ã¢ã¯åžžã«å®å®ããŠããããã§ã¯ãªãããªãªãŒã¹éã§ããã°ãååšããå¯èœæ§ããããŸãã ããããIPythonã§ä¿®æ£ããå¿ èŠã®ãããã®ã¯äœããããŸããã ããã§äœããè¡ã£ããšããŠãããªãªãŒã¹ãããåã«ä¿®æ£ãIPythonå®å®çã«å«ãŸããããšã¯ãããŸãã...
åé¡ã¯ipython == 4.2.0ã§ã解決ããŸããã èå³æ·±ãããšã«ããŠã£ã³ããŠã®äžã§ã¯åé¡ã¯ãããŸããããubuntuã°ããŒãã«å€æ°ãšäžç·ã«èªèãããŸããã
䜿çšäºäŸïŒ
from ipywidgets import interact, FloatSlider, IntSlider,RadioButtons, Dropdown
@interact(sv1 = radio_1, Scenario = drop_1, sv2 = slider_2)
def update_map(sv1,sv2, Scenario):
åé¡ãæ®ã£ãŠããŸãã IPython 3.1.0ãDebianWhezyã
æ£ããæãåºãã°ãããã¯ãã°ããã®éä¿®æ£ãããåå°å ¥ãããããã§ãïŒmacOSã§IPython 5.1.0ã䜿çšããŠããã§åçŸïŒhttpsïŒ//git.io/vPDrJïŒã
ïŒç·šéïŒä¿®æ£ã誀ã£ãŠèŠããŠããå¯èœæ§ããããŸããåã蟌ã¿ã䜿çšãã代ããã«ãå¿ èŠãªãã®ãã¹ãŠãã¹ã¿ãŒãã¢ãããã¡ã€ã«ã«æã蟌ãã å¯èœæ§ããããŸãïŒ
ãããåé¿çãšããŠãã®ã³ãŒãã䜿çšããŠãã人ã«åœ¹ç«ã€å Žåã«åããŠ
def fix_embed_globals(N=0):
# Get the parent frame
import inspect
frame_level0 = inspect.currentframe()
frame_cur = frame_level0
N = 2 # I may have this value off by one. I rewrote this function to use only standard calls
strict = False
for _ix in range(N + 1):
frame_next = frame_cur.f_back
if frame_next is None:
if strict:
raise AssertionError('Frame level %r is root' % _ix)
else:
break
frame_cur = frame_next
parent_frame = frame_cur
# Add locals to parent globals
parent_frame.f_locals.update(parent_frame.f_globals)
parent_frame.f_globals['_didfixipyglobals'] = True
ååãšã©ãŒãçºçãããã³ã«ããã®é¢æ°ãåŒã³åºãã ãã§ãã çŸåšã®ãã¬ãŒã å ã®ãã¹ãŠã®ããŒã«ã«ãã°ããŒãã«èŸæžã«é 眮ããŸãã ãã®ããããŒã§ãããã»ãšãã©ã®ç¶æ³ã§æ©èœããŸãã
https://github.com/inducer/pudb/issues/103ã«èšèŒãããŠããããã«ãåã蟌ã¿ã·ã§ã«ã䜿çšããéã®äžæçãªåé¿çã¯æ¬¡ã®ãšããã§ãã globals().update(locals())
ïŒããŒã«ã«ã°ããŒãã«å€æ°ãå®çŸ©ããåŸã®ã¿ïŒã
ããŒãããã®ãã°ã®ãã€ã«ã¹ããŒã³ã次ã®ããŒãžã§ã³ã®1ã€ã«å€æŽã§ããŸããïŒ
å®äºã
ããã¯ä¿®æ£ãããŸããïŒ
AFAIKãæ°å¹Žåã®ç§ã®ã³ã¡ã³ãã¯æ¬¡ã®ãšããã§ãã
Pythonèªäœã®åäœæ¹æ³ã«ãã£ãŠå¶éããããšæããŸãã ã¯ããŒãžã£ãšåçè©äŸ¡ã¯äžç·ã«ããŸãæ©èœãããIPythonã¯ãããä¿®æ£ã§ããŸããã 人ã ã¯ããŒã«ã«å€æ°ãã°ããŒãã«åå空éã«ç§»åããããã®åé¿çãèŠã€ããŸãããããããã¯ã°ããŒãã«åå空éãå€æŽããŠãããããä»ã®åé¡ãåŒãèµ·ããå¯èœæ§ã®ããããã¯ã§ãã ãã®ãããªåé¿çãIPythonã«çµã¿èŸŒãäºå®ã¯ãããŸããã è³¢ããªããããŠçŽ¹ä»ããããããç§ãã¡ããã£ãŠããªãããšã«åé¡ãæ®ãããã®ã§ãã
人ã
ãembed()
欲ãããšæã£ãå€ãã®å Žæã§start_ipython()
䜿çšããŠããã®çš®ã®åé¡ãåé¿ããå¿
èŠããããŸãã
åãããŸããããããŠããã¯ç§ãæãããŸãã
ç³ãèš³ãããŸãããã空ã®.pyãã¡ã€ã«ã«å ¥åããå Žåã«æ©èœãããã®ãããã§ã¯æ©èœããªãããšã«äžæºãæããŸãã
ããããå±¥æŽãèªã¿çŽããšãããã¯Djangoã®manage.py shell
ã®åé¡ã®ããã§ããå
·äœçã«ã¯ãipythonã䜿çšããŠããæéã®90ïŒ
ã¯ããããŠããŸããããããäºå®ã§ããããšãå¿ããã¡ã§ãã
æ¥ããããããšã«ãç§ã¯DjangoïŒ1.4ïŒã®å»æ¢ããŒãžã§ã³ã§å€ãã®äœæ¥ãè¡ã£ãŠããŸã
以åã®ã³ã¡ã³ãã«ãããšãDjangoã·ã§ã«ã®æ°ããããŒãžã§ã³ã¯ipythonã®äœ¿çšæ¹æ³ãç°ãªããåé¡ããªãå¯èœæ§ããããŸããïŒ äŸïŒ https ïŒ
誀解ããè©«ã³ããŸã
ã¯ããDjango1.6ã§ä¿®æ£ããããšæããŸãã æ¬åœã«ã¢ããã°ã¬ãŒãã§ããªãå Žåã¯ãä¿®æ£ãæåã§é©çšããããšããå§ãããŸãã https://github.com/django/django/commit/3570ff734e93f493e023b912c9a97101f605f7f5ã®ããã§ã
ä»æ¥ã ïŒ10695ã«æçš¿ãããŠããåé¿çãèŠã€ããŸããã IPythonãé¢æ°å ã«åã蟌ãŸããŠããªãå Žåã®ããç°¡åãªåŠçãããã®ã¹ã¬ããã«ç€ºãã
æãåèã«ãªãã³ã¡ã³ã
https://github.com/inducer/pudb/issues/103ã«èšèŒãããŠããããã«ãåã蟌ã¿ã·ã§ã«ã䜿çšããéã®äžæçãªåé¿çã¯æ¬¡ã®ãšããã§ãã
globals().update(locals())
ïŒããŒã«ã«ã°ããŒãã«å€æ°ãå®çŸ©ããåŸã®ã¿ïŒã