Immer " ImportError: Kein Modul mit dem Namen tornado.httpserver'
Versuchen, bereitstellen einer einfachen tornado-app auf meinem Debian 6 server. Ich habe installiert tornado mit pip und jetzt ist es auf:
/usr/local/lib/python2.6/dist-packages/tornado
Ebenfalls fügte ich manuell den Pfad zu tornado auf .bashrc von myuser wer führt myapp.py:
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 ist Mitglied der www-data Gruppe.
Bekomme ich diese lästige Fehlermeldung in /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
Den Vorgesetzten.conf sieht so aus:
[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
Ironischerweise die gleiche app mit den gleichen configs (aprat form /path/to/myapp.py und Datei-Besitzer) bereitgestellt wurde tadellos auf einem anderen Debian server testen. Wirklich verwirrt und dankbar für Eure Hinweise.
- Warum nutzen Sie nicht virtualenv für die Installation von tornado richtig?
- Einstellung PYTHONPATH manuell ist ein Zeichen von broken-by-design.
- Nicht sicher, wie zu tun, dass in virtualenv
- dieser ist ein sehr gutes tutorial
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht fügen Sie die tornado-Verzeichnis zu PYTHONPATH, aber das Verzeichnis enthält es (dist-packages). Ich bin mir nicht sicher, wie debian setzt Ihre Standard-python-Pfad, aber Verzeichnisse wie dist-packages und Website-Pakete sind in der Regel auf Standard. Wenn Sie nicht sind, Sie wirklich brauchen, um Sie über eine sitecustomize.py Datei (mit Website.addsitedir()) anstatt nur zu ändern von den pythonpath, die für bestimmte Funktionen (obwohl das spielt keine Rolle für tornado).
.bashrc wird nicht verwendet, wenn ein Programm ausgeführt unter supervisord. Wenn Sie brauchen, um die Umwelt zu ändern, tun Sie dies mit einer 'Umwelt' - Anweisung in den supervisor.conf.