我正在使用collective.python buildout。
我有以下.pythonrc
(配置export PYTHONSTARTUP=~/.pythonrc
):
import readline
import rlcompleter
readline.parse_and_bind('tab: complete')
当我在shell中运行Python
时,标签完成工作。当我在调试模式下运行Plone
时它没有。除非,我将.pythonrc
的内容粘贴到Plone调试Python提示符中。我在这里缺少什么?
注意:只有通过python bootstrap.py
安装Plone(即使用collective.python
Python引导Plone buildout)时,粘贴我的.pythonrc的内容才有效。如果我在virtualenv
内安装Plone,则无效。但至少在那种情况下,缺少的功能对我来说是有意义的(即,virtualenv
可能缺少使标签完成工作所需的功能。)
答案 0 :(得分:3)
实例控制器使用两个命令行开关; -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!
答案 1 :(得分: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