有用 lpy 的吗?交流一下


#81

一般不敢写函数,我有命名恐惧症 :sweat_smile:


#82

我发现有的时候用 dired 拷贝过来到当前文件夹的文件,lpy eval 的时候仍然是之前文件的路径,好奇怪啊。不知道是哪的毛病,你碰到过这个问题没有?

import os
os.getcwd()

#83

可能没有重启python session吧 你把和lpy以及python process有关的buffer都kill了试试?


#84

重启 python session 也没有用,重启 emacs 有用


#85

我发现真是太白痴了,开始一个新进程只要输入一个不同的进程名字就好了。

这个功能超级有用,比如我现在两套配置,一套对应py2的虚拟环境,使用python作为解释器,一套对应py3的虚拟环境,使用ipython作为解释器,简直了,完胜其它交互 python 环境。

abo-abo 是真正的大神,而且非常容易沟通,提的 issue 一般很快就修复了。有这样一位开发者在emacs阵营真是幸运。

什么时候能把 async eval 的问题解决了,就真的是神器了。


#86

我用ob-ipython不是写程序,而是写文档。本来就是一个一个三五行的小片段,连分支都没有,根本不需要思路。 inline插图是必须的,因为这是文档。


#87

嗯,我也是这样用的,代码短的就用 ob-ipython (scimax),长的就用 lpy。另外 lpy 还有一个使用场合,就是对需要交互式操作的绘图,科学计算等等,非常好用。当然,像你所说的写文档,那是非 org 莫属。

这样说吧,我用 lpy 操作一些外部的绘图程序 mayavi,后处理程序 paraview,以及一些开源有限元都没有问题,溜到飞起,感觉连 jupyter notebook 都不能这么玩。已经远远不止是绘图这么简单了。


#88

其实我只是忍不住安利得有点用力过猛了, :joy:

还是根据个人的需要选择最适合自己的工具吧


#89

有的时候需要的变量太多,就要写一长串参数或者做成列表/字典传入函数,函数里在一个个提取,doctoring又要写好多,很麻烦。


#90

确实。。我平常也是直接comment甚至直接改。。


#91

@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

#92

把 function-args 这个包也添加到你的 private layer 里,不用设置

(defun lpy/init-function-args ()
  (use-package function-args
    :defer t
    :init ))

或者也可以加到 dotspacemacs-addtional-packages (好像是这个名字)中。

你碰到的问题的原因是 lpy 没有把 function-args 设为依赖,但是又确实 require 这个包了。


#93

恩,没想到这是个包,rip。然后lpy要怎么开启呢?我看了下好像没有对应的mode诶,在python-mode下搜索它的函数也没有绑定任何快捷键。


#94

我好像是加到 python-mode-hook 中了

(add-hook 'python-mode-hook #'lpy-mode)

可能还有其它的一些注意事项,我在上面的帖子中都提到了


#95

好的,多谢啦


#96

刚刚花了三个小时终于把local/remote的lpy/org-edit-src 整合设置停当

占个坑 吃饭回来上code hhh

code 见

https://github.com/fuxialexander/doom-emacs-private-xfu/blob/master/modules/lang/python/autoload.el#L18-L59

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的环境进行补全

#97

这个厉害了,期待!

Edit:

感谢分享,把 ob-ipython 和 lpy 的 session 共用很赞!但是这个是要用最新的 ob-ipython 吗?我这么问是因为我的 ob-ipython 是从 scimax 中分叉过来的,可能不兼容,我估计还得花点时间迁移代码。不管怎样,这个真心赞,为很多新的玩法创造了可能性。


#98

为什么不用elpy呢?感觉挺好用的。


#99

刚看到你的edit

scimax的ob-ipython有多什么功能吗? 如果只是async的话最新版ob-ipython已经支持了 可以试试我的fork https://github.com/fuxialexander/ob-ipython (没啥大改动,只是merge 了一个最新的PR(by @finalpatch) 之后准备把上面那些advice加进去


#100

侧重点不同 elpy相当于提供了一堆code completion, 写代码,run code的工具 讲道理现在可以用lsp-python或者anaconda-mode达到一样的功能 anaconda-mode的速度可能还更快

elpy不支持tramp https://github.com/jorgenschaefer/elpy/issues/276 anaconda 算是支持一半

至于lpy提供的主要还是一套新的和代码交互的interface 你可以找个lispy的视频看看就明白是啥意思了 总的来说很多常用操作都可以用一个字母键完成 很方便