我已经通过从Melpa安装elpy来安装Python代码完成,而且它似乎像广告中所宣传的那样起作用(主要是)。
不过,我希望它也能完成web2py API,并且我认为实现这一点的最好方法是使用web2py shell,而不是普通的shell。
第0次尝试
谷歌Emacs,web2py和自动完成没有产生任何有用的结果。
第一次尝试
所以我在我的~/.emacs.d/init.el文件中添加了
(setq python-shell-interpreter-args
"/path/to/web2py/web2py.py --plain --import_models --shell=myapp")..。不起作用。
第二次尝试
在埃尔皮博士之后,我意识到我可能需要自定义elpy-rpc-python-command变量。
因此,我编写了这个~/bin/rpc-web2py脚本,如:
#!/bin/sh
# note: the $@ need to relate to python becase elpy what's to pass `-W` to it.
python2.7 "$@" /path/to/web2py/web2py.py --shell=myapp --plain --import_models并将Elpy命令定制为其他命令:~/bin/rpc-web2py
..。还是没有“分贝”完成。
help
我用正确的方法处理这个问题吗?我不致力于任何具体的代码完成解决方案,并愿意有一个新的.emacs.d,如果需要。
有人能有类似的工作安排吗?
发布于 2015-11-24 07:32:32
我有一个明显的疏忽,那就是我没有将/path/to/web2py添加到我的$PYTHONPATH环境变量中,正如Baris的根据密码..。博客所指出的那样。
答案的另一部分来自马西莫·迪·皮耶罗( Massimo Di Pierro )的Web2py书,他说:
通用IDEs在web2py中的应用 这些IDE的一般问题(支持web2py的IDE除外)是,它们不了解执行模型和控制器的上下文,因此自动完成不符合实际情况。 要使自动完成工作,一般技巧是编辑模型和控制器,并添加以下代码:
if False:
from gluon import *
request = current.request
response = current.response
session = current.session
cache = current.cache
T = current.T导入块不会改变逻辑,因为它从未执行过,但它强制IDE解析它并了解全局命名空间中的对象来自何处(胶子模块),从而使自动完成工作。 如果您依赖于模型中的变量(例如数据库定义),可以考虑向列表中添加如下内容:
from db import *您还可以考虑导入所有模型。
if False:
from gluon import *
from db import * #repeat for all models
from menu import *虽然这更多地是一种解决方案而不是解决方案,但我将接受它,而已经作为elpy的一部分的雅斯尼伯是使这个解决方案变得微不足道的逻辑工具。
如果有人想出一些不那么变通的解决办法,我会很高兴地接受这个答案。
https://stackoverflow.com/questions/33856897
复制相似问题