Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Emacs elpy和web2py_Python_Emacs_Web2py_Code Completion_Elpy - Fatal编程技术网

Python Emacs elpy和web2py

Python Emacs elpy和web2py,python,emacs,web2py,code-completion,elpy,Python,Emacs,Web2py,Code Completion,Elpy,我通过从Melpa安装elpy来设置Python代码完成,并且它似乎(大部分)如广告所示工作正常 不过,我希望它也能完成Web2PyAPI,我认为实现这一点的最佳方法是使用web2py shell,而不是普通的shell 0次尝试 谷歌搜索Emacs、web2py和autocompletion并没有产生任何有用的结果 第一次尝试 因此,我添加到我的~/.emacs.d/init.el文件中 (setq python-shell-interpreter-args "/path/to/

我通过从Melpa安装elpy来设置Python代码完成,并且它似乎(大部分)如广告所示工作正常

不过,我希望它也能完成Web2PyAPI,我认为实现这一点的最佳方法是使用web2py shell,而不是普通的shell

0次尝试

谷歌搜索Emacs、web2py和autocompletion并没有产生任何有用的结果

第一次尝试

因此,我添加到我的
~/.emacs.d/init.el
文件中

(setq python-shell-interpreter-args 
      "/path/to/web2py/web2py.py --plain --import_models --shell=myapp")
。。。不起作用

第二次尝试

接下来,我意识到我可能需要定制
elpyrpcpython命令
变量

所以我写了这个
~/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-Rpc-Python命令自定义为Other:
~/bin/Rpc-web2py

。。。仍然没有“db”完成

帮助

我是否以正确的方式处理这个问题?我不致力于任何特定的代码完成解决方案,如果需要,我愿意拥有一个全新的
.emacs.d


有人能有类似的工作设置吗?

我的一个明显疏忽是,我没有将
/path/to/web2py
添加到我的
$PYTHONPATH
环境变量中,正如Baris的博客所说

答案的另一部分来自马西莫·迪·皮耶罗,他说:

这些IDE(除了那些支持web2py的IDE)的一般问题是,它们不理解执行模型和控制器的上下文,因此自动完成无法开箱即用

要使自动完成工作正常,一般技巧包括编辑模型和控制器并添加以下代码:

导入块不会更改逻辑,因为它从未执行过,但它会强制IDE对其进行解析,并了解全局名称空间中的对象来自何处(Glion模块),从而使自动完成工作

如果你依赖模型中的变量(比如数据库定义),你可以考虑这样添加到列表:

也可以考虑导入所有模型。

虽然这与其说是一个解决方案,不如说是一个解决方案,但我会接受它,而这已经作为elpy的一部分出现,是使这个解决方案变得微不足道的逻辑工具


如果有人能想出一些解决办法,我会欣然接受这个答案。

很好的解决办法。谢谢分享!
if False:
    from gluon import *
    request = current.request
    response = current.response
    session = current.session
    cache = current.cache
    T = current.T
from db import *
if False:  
    from gluon import *
    from db import *  #repeat for all models
    from menu import *