有没有办法从脚本中启动 Python 解释器,其方式类似于仅使用python -i
以便保留当前脚本中的对象/命名空间等?不使用的原因是脚本初始化了与 XML-RPC 服务器的连接,如果出现错误python -i
,我需要能够停止整个程序。在有有效输入之前我不能循环,因为显然我不能做这样的事情:
#!/usr/bin/python -i
# -*- coding: utf-8 -*-
import xmlrpclib
# Create an object to represent our server.
server_url = str(raw_input("Server: "))
while not server = xmlrpclib.Server(server_url):
print 'Unable to connect to server. Please try again'
else:
print 'Xmlrpclib.Server object `__main__.server\' of URL `', server_url, "' created"
break
# Python interpreter starts...
因为:
% chmod u+x ./rpcclient.py
% ./rpclient.py
Traceback (most recent call last):
File "./rpcclient.py", line 8
while not server = xmlrpclib.Server(server_url):
^
SyntaxError: invalid syntax
>>>
不幸的是,python -i
在它打印出回溯后立即启动解释器,所以我不得不从脚本中调用交互式解释器 - 替换脚本的执行以保持服务器连接