2016-05-11 33 views
2

據我所知,我應該能夠在下面的代碼片段中打印變量foo如何將變量從JavaScript傳遞給Jupyter中的python?

from IPython.display import HTML 
HTML(''' 
    <script type="text/javascript"> 
     IPython.notebook.kernel.execute("foo=97") 
    </script> 
    ''') 
print(foo) 

相反,我看到此錯誤消息:

NameErrorTraceback (most recent call last) 
<ipython-input-2-91b73ee49ec6> in <module>() 
     5  </script> 
     6  ''') 
----> 7 print(foo) 

NameError: name 'foo' is not defined 

我試圖使用this answer但努力使其發揮作用。

FWIW,這是在Fedora 23上運行的最新的Jupyter代碼(根據pip)。使這項工作成爲先決條件是什麼?

+0

這不起作用的原因是,它會在執行Javascript發送它的新代碼之前完成單元中的代碼。 –

回答

6

這是我如何使你的代碼工作: enter image description here

或更簡單:

enter image description here

+0

這兩者之間是否存在實際差異? –

+0

如何調用外部JavaScript腳本? – LFRC

+0

如何在這兩者之間產生雙向通信? – LFRC

1
from IPython.display import HTML 
HTML(''' 
<script type="text/javascript"> 
    IPython.notebook.kernel.execute("foo=11") 
</script> 
''') 
from time import sleep 
sleep(3) 
print(foo) 

這個作品是HTML的原因需要一些時間來打印工作,你甚至在設定值之前。隨着睡眠,3秒的等待時間似乎已經足夠,變量被分配。

相關問題