一般不敢写函数,我有命名恐惧症
我发现有的时候用 dired 拷贝过来到当前文件夹的文件,lpy eval 的时候仍然是之前文件的路径,好奇怪啊。不知道是哪的毛病,你碰到过这个问题没有?
import os
os.getcwd()
可能没有重启python session吧 你把和lpy以及python process有关的buffer都kill了试试?
重启 python session 也没有用,重启 emacs 有用
我发现真是太白痴了,开始一个新进程只要输入一个不同的进程名字就好了。
这个功能超级有用,比如我现在两套配置,一套对应py2的虚拟环境,使用python作为解释器,一套对应py3的虚拟环境,使用ipython作为解释器,简直了,完胜其它交互 python 环境。
abo-abo 是真正的大神,而且非常容易沟通,提的 issue 一般很快就修复了。有这样一位开发者在emacs阵营真是幸运。
什么时候能把 async eval 的问题解决了,就真的是神器了。
我用ob-ipython不是写程序,而是写文档。本来就是一个一个三五行的小片段,连分支都没有,根本不需要思路。 inline插图是必须的,因为这是文档。
嗯,我也是这样用的,代码短的就用 ob-ipython (scimax),长的就用 lpy。另外 lpy 还有一个使用场合,就是对需要交互式操作的绘图,科学计算等等,非常好用。当然,像你所说的写文档,那是非 org 莫属。
这样说吧,我用 lpy 操作一些外部的绘图程序 mayavi,后处理程序 paraview,以及一些开源有限元都没有问题,溜到飞起,感觉连 jupyter notebook 都不能这么玩。已经远远不止是绘图这么简单了。
其实我只是忍不住安利得有点用力过猛了,
还是根据个人的需要选择最适合自己的工具吧
有的时候需要的变量太多,就要写一长串参数或者做成列表/字典传入函数,函数里在一个个提取,doctoring又要写好多,很麻烦。
确实。。我平常也是直接comment甚至直接改。。
@et2010 你是怎么在spacemacs上安装lpy的,我这样安装了
(defconst ztlevi-programming-packages
'(
(lpy :location (recipe :fetcher github :repo "abo-abo/lpy"))
)
)
(defun ztlevi-programming/init-lpy ()
(use-package lpy))
启动时会报这个错:
Error (use-package): lpy/:catch: Cannot open load file: No such file or directory, function-args
把 function-args 这个包也添加到你的 private layer 里,不用设置
(defun lpy/init-function-args ()
(use-package function-args
:defer t
:init ))
或者也可以加到 dotspacemacs-addtional-packages (好像是这个名字)中。
你碰到的问题的原因是 lpy 没有把 function-args 设为依赖,但是又确实 require 这个包了。
恩,没想到这是个包,rip。然后lpy要怎么开启呢?我看了下好像没有对应的mode诶,在python-mode下搜索它的函数也没有绑定任何快捷键。
我好像是加到 python-mode-hook
中了
(add-hook 'python-mode-hook #'lpy-mode)
可能还有其它的一些注意事项,我在上面的帖子中都提到了
好的,多谢啦
刚刚花了三个小时终于把local/remote的lpy/org-edit-src 整合设置停当
占个坑 吃饭回来上code hhh
code 见
Example:
** DONE Test remote ob-ipython and lpy and anaconda
:PROPERTIES:
:header-args:ipython: :session remote-host-kernel-28595-ssh.json :ipyfile /local/path/test_lpy.png :pydir /ssh:user@host:/path/to/workdir :exports both :results raw drawer
:END:
- lpy and ob-ipython works at remote
- lpy completion through capf works
- company-ob-ipython is slow as hell
- company-anaconda need configuration to work on TRAMP, I dont want to fiddle with it.
#+BEGIN_SRC ipython
# %pylab
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.plot([1, 2, 3, 4])
import seaborn as sns
a = np.array([1, 2, 3])
b = a.T
c = b * 100
#+END_SRC
remote使用方法:在远程server 上执行ipython kernel
, 用print出来的kernel ID (一串数字)替换org properties里的ID,然后在code block上C-c C-c
即可:
- 自动建立到远程kernel的连接
- 弹出一个连接到远程的REPL
这时在code block上C-c ' / org-edit-src-block
会弹出代码编辑窗口
-
(python-shell-send-defun) /... / lpy's eval
都可以将编辑窗口中的代码发送至刚刚打开的REPL -
completion-at-point
会用REPL的环境进行补全
这个厉害了,期待!
Edit:
感谢分享,把 ob-ipython 和 lpy 的 session 共用很赞!但是这个是要用最新的 ob-ipython 吗?我这么问是因为我的 ob-ipython 是从 scimax 中分叉过来的,可能不兼容,我估计还得花点时间迁移代码。不管怎样,这个真心赞,为很多新的玩法创造了可能性。
为什么不用elpy呢?感觉挺好用的。
刚看到你的edit
scimax的ob-ipython有多什么功能吗? 如果只是async的话最新版ob-ipython已经支持了 可以试试我的fork GitHub - fuxialexander/ob-ipython: org-babel integration with Jupyter for evaluation of (Python by default) code blocks (没啥大改动,只是merge 了一个最新的PR(by @finalpatch) 之后准备把上面那些advice加进去
侧重点不同 elpy相当于提供了一堆code completion, 写代码,run code的工具 讲道理现在可以用lsp-python或者anaconda-mode达到一样的功能 anaconda-mode的速度可能还更快
elpy不支持tramp Elpy in Tramp buffers · Issue #276 · jorgenschaefer/elpy · GitHub anaconda 算是支持一半
至于lpy提供的主要还是一套新的和代码交互的interface 你可以找个lispy的视频看看就明白是啥意思了 总的来说很多常用操作都可以用一个字母键完成 很方便