[英]Tornado 'Hello World' Error
我试图在命令行运行以下HelloWorld脚本
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8888, help="run on the given port", type=int)
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def main():
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/", MainHandler),
])
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
我收到以下错误
File "helloworld.py", line 17, in ?
import tornado.httpserver
File "/home/username/public_html/tornado-1.2.1/tornado/httpserver.py", line 28, in ?
from tornado import ioloop
File "/home/username/public_html/tornado-1.2.1/tornado/ioloop.py", line 184
action if action is not None else signal.SIG_DFL)
^
SyntaxError: invalid syntax
全新的Python
,有人可以解释所指出的问题是什么吗? PS helloworld.py位于/home/username/public_html/tornado-1.2.1/
目录中,同一目录中有一个tornado
子目录。
编辑:(现在忽略此编辑)我正在运行的命令是
python helloworld.py
python -V
的结果是
Python 2.4.3
不幸的是,Tornado不适用于2.5之前的版本,所以这可能是问题所在。 但是,我已经安装了Python 2.6.6如何确保它使用正确版本的Python而不是旧版本运行?
编辑二
现在我将Python设置为2.6.6
并运行
python helloworld.py
不产生任何输出。 该程序只是在命令行冻结。
这有什么想法?
正如您自己发现的那样,问题是python 2.4不支持条件表达式运算符。
如何切换到另一个Python版本取决于您的系统。 在debian和Ubuntu上,你可以编辑/usr/share/python/debian_defaults
。 在所有Linux系统上,您可以删除/ usr / bin / python并链接到您想要的版本:
sudo mv /usr/bin/python /usr/bin/python.dist
sudo ln -s /usr/bin/python2.5 /usr/bin/python
或者,您可以在/usr/bin
之前修改PATH
环境变量以包含具有所需python
二进制文件的目录(这可能是Windows上的方法)。 您可以通过编辑~/.profile
(在每次登录时)或~/.bashrc
(在交互式,bash shell中)来使其永久化。
要将Python 2.6作为默认值,请确保在.bash_rc
python
映射到/usr/bin/python2.6
。
如果您正在尝试修复此问题,则需要完成并交换条件运算符:
if seconds is not None:
signal.signal(signal.SIGALRM,
action if action is not None else signal.SIG_DFL)
此语法( action if action is not None else signal.SIG_DFL
则为action if action is not None else signal.SIG_DFL
)仅在Python 2中可用。> = 5
alt? 不太好但可行:
if seconds is not None:
if action is not None:
tmpaction = action
else
tmpaction = signal.SIG_DFL
signal.signal(signal.SIGALRM,tmpaction)
我强烈建议你简单地升级到最新版本的PYTHON。 没有保证您不会发现其他问题。 (当然,除非你想要学习经验)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.