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

产生了想要的结果。希望有人会觉得这有帮助。 谢谢