如何让Plone读取我的pythonrc?

我正在使用collective.python buildout.

我有以下.pythonrc(使用export PYTHONSTARTUP =〜/ .pythonrc配置):

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

当我在shell中运行Python时,选项卡完成工作.当我在调试模式下运行Plone时,它没有.除非,我将.pythonrc的内容粘贴到Plone调试Python提示符中.我在这里错过了什么?

注意:粘贴我的.pythonrc的内容只有在我通过python bootstrap.py安装Plone时才能工作(即使用collective.python Python引导Plone buildout).如果我在一个virtualenv中安装Plone,没有任何作用.但至少在那种情况下,缺少的功能对我来说是有意义的(即,可能缺少使用制表符完成工作所需的virtualenv.)

解决方法:

实例控制器使用两个命令行开关; -i用于交互模式,-c用于加载Zope配置并设置app变量. -c开关禁用PYTHONSTARTUP环境变量.

你可以修改plone.recipe.zope2instance包来运行脚本.

在plone.recipe.zope2instance中,找到plone / recipe / zope2instance / ctl.py文件,将do_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

上一篇:libedit / readline与OS X 10.7 Lion上的ipython 3.2.2冲突


下一篇:Python readline自动完成(tab):为什么破折号和问号被视为单词分隔符?