获取'ImportError:没有名为tornado.httpserver的模块'

时间:2013-10-08 04:55:53

标签: python tornado supervisor

尝试在我的Debian 6服务器上部署一个简单的龙卷风应用程序。我已经使用pip安装了龙卷风,现在它已经开启了:

/usr/local/lib/python2.6/dist-packages/tornado

另外,我手动添加了执行myapp.py的myuser的.bashrc上龙卷风的路径:

PYTHONPATH=/usr/local/lib/python2.6/dist-packages/tornado:/usr/local/lib/python2.6/dist-packages/tornado:/usr/local/lib/python2.6/dist-packages

myuser是www-data组的成员。

我在/var/log/tornado.log中遇到了这个恼人的错误:

File "/path/to/myapp.py", line 1, in <module>
    import tornado.httpserver, tornado.ioloop, tornado.options, tornado.web, os.path, random, string
ImportError: No module named tornado.httpserver

supervisor.conf是这样的:

[group:tornadoes]
programs=tornado-8000,tornado-8001,tornado-8002,tornado-8003


[program:tornado-8000]
command=python /path/to/myapp.py --port=8000
directory=/path/to
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8001]
command=python /path/to/myapp.py --port=8001
directory=/path/to
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8002]
command=python /path/to/myapp.py --port=8002
directory=/path/to
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8003]
command=python /path/to/myapp.py --port=8003
directory=/path/to
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info

具有讽刺意味的是,具有相同配置的相同应用程序(aprat形式/path/to/myapp.py和文件所有者)在另一个Debian测试服务器上部署得很好。真的很困惑,欣赏你的提示。

1 个答案:

答案 0 :(得分:0)

您不应将tornado目录添加到PYTHONPATH,而是包含它的目录(dist-packages)。我不确定debian如何设置其默认的python路径,但默认情况下,dist-packages和site-packages等目录通常都在其上。如果它们不是,你实际上需要通过sitecustomize.py文件(使用site.addsitedir())添加它们,而不是仅修改pythonpath以使某些功能起作用(尽管这对龙卷风来说无关紧要)。

在supervisord下运行程序时不使用.bashrc。如果您需要更改环境,请使用supervisor.conf中的“environment”语句执行此操作。