gpt4 book ai didi

python - Emacs elpy 和 web2py

转载 作者:行者123 更新时间:2023-12-01 04:20:04 26 4
gpt4 key购买 nike

我通过从 Melpa 安装 elpy 来设置 Python 代码完成,并且它似乎(大部分)按照广告宣传的那样工作。

但是我希望它也能完成 web2py API,并且我认为实现此目的的最佳方法是使用 web2py shell,而不是普通 shell。

第0次尝试

Google 搜索 Emacsweb2py自动完成没有产生任何有用的结果。

第一次尝试

所以我添加到我的 ~/.emacs.d/init.el 文件

(setq python-shell-interpreter-args 
"/path/to/web2py/web2py.py --plain --import_models --shell=myapp")

...没用。

第二次尝试

遵循elpy doc我意识到我可能需要自定义 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 Rpc Python命令自定义为其他: ~/bin/rpc-web2py

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

帮助

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

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

最佳答案

我的一个明显的疏忽是,我没有将 /path/to/web2py 添加到我的 $PYTHONPATH 环境变量中,正如 Baris 的 on the code... 所指出的那样博客。

答案的另一部分来自 Massimo Di Pierro 的 The Web2py book,内容如下:

Using general purpose IDEs with web2py

The general problem with these IDEs (except those which support web2py) is that they do not understand the context in which models and controllers are executed and therefore autocompletion does not work out of the box.

To make autocompletion work the general trick consists in editing your models and controllers and adding the following code:

if False:
from gluon import *
request = current.request
response = current.response
session = current.session
cache = current.cache
T = current.T

The import block does not change the logic as this is never executed but it forces the IDE to parse it and understand where the objects in the global namespace come from (the gluon module) thus making autocompletion work.

If you are relying on variables in your models (such as database definitions) you may consider adding to the list like this:

from db import *

You can also consider importing all models.

if False:  
from gluon import *
from db import * #repeat for all models
from menu import *

虽然这更像是一种解决方法而不是解决方案,但我会接受它,并且已经作为 elpy 的一部分提供的 yasnippet 是使此解决方法变得微不足道的逻辑工具。

如果有人能提出一些不太可行的解决方案,我会很乐意接受这个答案。

关于python - Emacs elpy 和 web2py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com