4

私はcollective.python buildout を使用しています。

私は次のものを持っています.pythonrc(で構成されていますexport PYTHONSTARTUP=~/.pythonrc):

import readline
import rlcompleter
readline.parse_and_bind('tab: complete')

Pythonシェルで実行すると、タブ補完が機能します。デバッグモードで実行するPloneと、そうではありません。そうでなければ、my の内容を.pythonrcPlone デバッグ Python プロンプトに貼り付けます。ここで何が欠けていますか?

: .pythonrc の内容を貼り付けることは、Plone をインストールした場合(つまり、 Pythonpython bootstrap.pyで Plone ビルドアウトをブートストラップする場合) にのみ機能します。collective.python内に Plone をインストールするとvirtualenv、何も動作しません。しかし、少なくともそのシナリオでは、欠落している機能は私には理にかなっています (つまり、virtualenvタブ補完を機能させるために必要な から何かが欠落している可能性があります)。

4

2 に答える 2

3

インスタンス コントローラは 2 つのコマンドライン スイッチを使用します。-i対話モードの場合、Zope 構成をロードして変数-cを設定する。スイッチは、環境変数を無効にするものappです。-cPYTHONSTARTUP

とにかくスクリプトを実行するようにパッケージを変更できます。plone.recipe.zope2instance

でファイルをplone.recipe.zope2instance見つけ、メソッドを次のように変更します。plone/recipe/zope2instance/ctl.pydo_debug()

def do_debug(self, arg):
    interactive_startup = ("import os;"
        "os.path.exists(os.environ.get('PYTHONSTARTUP', '')) "
        "and execfile(os.environ['PYTHONSTARTUP']); del os;"
        'import Zope2; app=Zope2.app()')
    cmdline = self.get_startup_cmd(self.options.python,
                                   interactive_startup,
                                   pyflags = '-i', )

実際、私はサポートするというアイデアがPYTHONSTARTUPとても好きで、すでにその変更をレシピにコミットしています。rev 536f8fc1c4を参照してください。

于 2012-12-12T17:22:40.593 に答える
1

私はそうしますimport user。これは読みます~/.pythonrc.py。.py 拡張子に注意してください。そのファイルを自分のファイルとして設定しましたPYTHONSTARTUP

念のため、そのファイルを貼り付けます。私は数年前にそれをまとめました。2006 と python2.3 についてのコメントを見ているので、それがまだ最高かどうかはわかりません。しかし、それはトリックを行います。

$ cat ~/.pythonrc.py 
# See http://blog.partecs.com/2006/02/27/source-inspector/
#import pydoc
import inspect
import rlcompleter, readline

readline.parse_and_bind('tab: complete')

# def source(obj):
#     """source of the obj."""
#     try:
#         pydoc.pipepager(inspect.getsource(obj), 'less')
#     except IOError:
#         pass

# From /usr/local/lib/python2.3/user.py
import os
home = os.curdir                        # Default
if 'HOME' in os.environ:
    home = os.environ['HOME']
elif os.name == 'posix':
    home = os.path.expanduser("~/")
# Make sure home always ends with a directory separator:
home = os.path.realpath(home) + os.sep

# From http://wiki.python.org/moin/PdbRcIdea
# Command line history:
histfile = home + '.pyhist'
try:
    readline.read_history_file(histfile)
except IOError:
    pass
import atexit
atexit.register(readline.write_history_file, histfile)
readline.set_history_length(200)

# Cleanup namespace
# del atexit
# del home
# del histfile
# del os
# del readline
# del rlcompleter
于 2012-12-12T22:45:02.703 に答える