1

Melpaからelpyをインストールして Python コード補完をセットアップしましたが、宣伝どおりに (ほとんど) 動作するようです。

しかし、web2py API も完成させたいので、これを達成する最善の方法は、通常のシェルの代わりに web2py シェルを使用することだと考えました。

0 回目の試行

Emacsweb2py、およびオートコンプリートを Google で検索しても、有用な結果は得られませんでした。

1回目

だから私は自分の~/.emacs.d/init.elファイルに追加しました

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

... 動作しませんでした。

2回目の試行

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 CommandOtherにカスタマイズしました。 ~/bin/rpc-web2py

...まだ「db」はありません。完了。

ヘルプ

この問題に正しい方法で取り組んでいますか? 私は特定のコード補完ソリューションに専念しているわけではありませ.emacs.dん。

誰かが同様の作業セットアップを持つことができましたか?

4

1 に答える 1

3

私の側からの明らかな見落としの 1 つは、Baris のコード...ブログで有益に述べられている/path/to/web2pyように、環境変数に を追加しなかったことです。$PYTHONPATH

回答の他の部分は、Massimo Di Pierro によるWeb2py の本からのもので、次のように書かれています。

web2pyで汎用IDEを使用する

これらの IDE (web2py をサポートするものを除く) の一般的な問題は、モデルとコントローラーが実行されるコンテキストを認識しないため、そのままではオートコンプリートが機能しないことです。

オートコンプリートを機能させる一般的な方法は、モデルとコントローラーを編集し、次のコードを追加することです。

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

これは決して実行されないため、インポート ブロックはロジックを変更しませんが、IDE にそれを解析させ、グローバル名前空間内のオブジェクトがどこから来たのか (gluon モジュール) を理解させ、オートコンプリートを機能させます。

モデル内の変数 (データベース定義など) に依存している場合は、次のようにリストに追加することを検討してください。

from db import *

すべてのモデルをインポートすることも検討できます。

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

これは解決策というよりは回避策ですが、私はそれを受け入れます。すでにelpyの一部として提供されている yasnippet は、この回避策を簡単にするための論理的なツールです。

誰かが回避策の少ない解決策を思いついた場合、私はその答えを喜んで受け入れます。

于 2015-11-24T07:32:32.480 に答える