我正在使用emacs23和tramp来修改远程主机上的python脚本.我发现当我在emacs中启动python shell时,它会在远程主机上启动python.
我的问题是,当我尝试通过Cc Cc调用python-send-buffer时,它会出现错误
回溯(最近一次调用最后一次):文件"",第1行,在?ImportError:没有名为emacs的模块
回溯(最近一次调用最后一次):文件"",第1行,在?NameError:未定义名称"emacs"
现在,我必须承认,我真的不知道这里发生了什么.有没有办法让我配置emacs,以便我可以评估远程主机上的缓冲区?
非常感谢.
编辑:我遵循了eichin的建议并重新实现了python-send-region.请参阅下面的答案.
简短的回答:不写一些缺失的 elisp 代码就不行。
长版本:在 中python.el,run-python添加data-directory(在我的 Ubuntu 10.10 盒子上是/usr/share/emacs/23.1/etc/)到$PYTHONPATH,特别是这样它可以找到emacs.py(由本地 emacs 发行版提供)。然后它执行 a(python-send-string "import emacs")并期望它能够工作...
看起来使用的defadvice包装器tramp实际上并没有 pass PYTHONPATH,所以即使您在远程系统上有匹配的 emacs 版本,这也不起作用。
如果您M-x customize-variable RET tramp-remote-process-environment RET
然后点击其中一个INS按钮并添加,PYTHONPATH=/usr/share/emacs/23.1/etc然后点击STATE并将其设置为“当前会话”(只是为了测试它,或者“保存以供将来的会话”如果它对您有用),它几乎可以工作 - 投诉消失了,在任何情况下情况,因为远程 python 现在可以找到远程emacs.py. 如果你现在回到原来的问题,执行python-send-buffer,你只会遇到一个不同的错误:No such file or directory: '/tmp/py24574XdA'因为python-mode只是将内容填充到一个临时文件中并告诉 python 子进程加载它。
你必须改变(其他函数调用它),特别是它用于识别流浪者的python-send-region方式- 甚至有一个你可以建立的基础。(如果您这样做,请务必发布...)make-temp-filetramp-make-tramp-temp-file
| 归档时间: |
|
| 查看次数: |
2270 次 |
| 最近记录: |