emacs 的组织模式:python 个会话
Org-mode for emacs: python sessions
Emacs 27
Python 3.6
Windows10
我在使用会话时遇到问题,导致 org-mode 导出失败。
这是一个作为 org-mode ecxerpt 的插图:
#+begin_src python :session one :results file
#return 'filename.png' --- DNU in session mode
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-2*np.pi, 2*np.pi, 0.01)
y = np.sin(x)
fig = plt.plot(x,y)
filename = 'filename.png'
plt.savefig(filename)
filename
#+end_src
Inside same session:
#+begin_src python :session one :results value
z = -1
z
#+end_src
Yet inside same session again:
#+begin_src python :session one :results value
z = z - 3
z
#+end_src
问题是,如果我 运行 第一个块代码它工作正常并且我得到正确的输出,但是当 运行ning 跟随 2 个块代码时,它会导致 org-mode永远停止——没有错误信息。
但是,如果我 运行 只有最后 2 个块代码,一切都会按预期工作。
任何可能导致问题的线索都将不胜感激,
谢谢!
分享我的发现和解决。
问题似乎出在需要使用 'Agg' 后端的 matplotlib 中。
Org-mode 代码如下所示:
#+begin_src python :session one :exports results :results file
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
x = np.arange(-2*np.pi, 2*np.pi, 0.01)
y = np.sin(x)
fig = plt.plot(x,y, color='red')
filename = 'filename.png'
plt.savefig(filename)
filename
#+end_src
现在,继续原路:session one
:
#+begin_src python :session one :exports results
f'The last value of x is: {x[-1]}'
#+end_src
产生了想要的结果。希望有人会觉得这有帮助。
谢谢
Emacs 27 Python 3.6 Windows10
我在使用会话时遇到问题,导致 org-mode 导出失败。 这是一个作为 org-mode ecxerpt 的插图:
#+begin_src python :session one :results file
#return 'filename.png' --- DNU in session mode
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-2*np.pi, 2*np.pi, 0.01)
y = np.sin(x)
fig = plt.plot(x,y)
filename = 'filename.png'
plt.savefig(filename)
filename
#+end_src
Inside same session:
#+begin_src python :session one :results value
z = -1
z
#+end_src
Yet inside same session again:
#+begin_src python :session one :results value
z = z - 3
z
#+end_src
问题是,如果我 运行 第一个块代码它工作正常并且我得到正确的输出,但是当 运行ning 跟随 2 个块代码时,它会导致 org-mode永远停止——没有错误信息。 但是,如果我 运行 只有最后 2 个块代码,一切都会按预期工作。
任何可能导致问题的线索都将不胜感激, 谢谢!
分享我的发现和解决。 问题似乎出在需要使用 'Agg' 后端的 matplotlib 中。
Org-mode 代码如下所示:
#+begin_src python :session one :exports results :results file
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
x = np.arange(-2*np.pi, 2*np.pi, 0.01)
y = np.sin(x)
fig = plt.plot(x,y, color='red')
filename = 'filename.png'
plt.savefig(filename)
filename
#+end_src
现在,继续原路:session one
:
#+begin_src python :session one :exports results
f'The last value of x is: {x[-1]}'
#+end_src
产生了想要的结果。希望有人会觉得这有帮助。 谢谢