我正在使用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!