Frage

OK, also habe ich versucht, dies mit & ohne virtualenv:

uwsgi --home /home/auston/new_proj/ --socket /tmp/uwsgi2.sock --chmod-socket --module app_wsgi --pp /home/auston/new_proj/nikeshere --logto /tmp/uwsgi.log --master --processes 4 -P

So ziemlich nicht, was Rolle, ich diese:

*** Starting uWSGI 0.9.6.5 (32bit) on [Thu Oct 21 08:05:44 2010] ***
compiled with version: 4.4.3
Python version: 2.6.6 (r266:84292, Oct 21 2010, 04:07:38)
[GCC 4.4.3]
your memory page size is 4096 bytes
allocated 412 bytes (0 KB) for 1 request's buffer.
Setting PythonHome to /home/auston/new_proj/...
binding on UNIX socket: /tmp/uwsgi2.sock
chmod() socket to 666 for lazy and brave users
your server socket listen backlog is limited to 64 connections
added /home/auston/new_proj/nikeshere to pythonpath.
initializing hooks...done.
['/home/auston/new_proj/nikeshere', '.', '', '/home/auston/new_proj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg', '/home/auston/new_proj/lib/python2.6/site-packages/pip-0.8.1-py2.6.egg', '/home/auston/new_proj/lib/python26.zip', '/home/auston/new_proj/lib/python2.6', '/home/auston/new_proj/lib/python2.6/plat-linux2', '/home/auston/new_proj/lib/python2.6/lib-tk', '/home/auston/new_proj/lib/python2.6/lib-old', '/home/auston/new_proj/lib/python2.6/lib-dynload', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/home/auston/new_proj/lib/python2.6/site-packages', '/usr/local/lib/python2.6/dist-packages/pip-0.8.1-py2.6.egg', '/usr/local/lib/python2.6/site-packages', '/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', '/home/auston/new_proj/nikeshere', '/usr/local/lib/python2.6']
Traceback (most recent call last):
  File "/home/auston/new_proj/nikeshere/app_wsgi.py", line 11, in <module>
    import django.core.handlers.wsgi
  File "/usr/local/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 1, in <module>
    from threading import Lock
  File "/usr/lib/python2.6/threading.py", line 13, in <module>
    from functools import wraps
  File "/usr/lib/python2.6/functools.py", line 10, in <module>
    from _functools import partial, reduce
ImportError: No module named _functools

Wenn ich --home ändern /usr/local/lib/python/2.6 ich nicht auf meinem app_wsgi.py Import von os. Hier ist sie, unten, für alle Fälle:

import sys
import os

sys.path.append(os.path.abspath(os.path.dirname(__file__)))

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

Im Grunde frage ich, wie kann ich uwsgi bekommen functools zu erkennen oder auf dem richtigen Weg (Pfad ist in der Ausgabe oben). Ich würde schätzen jede Hilfe euch geben kann !!

P. S. Ubuntu 10.04 - uwsgi 0.9.6.5 - NGINX 0.8.53 - virtuelle env Python 2.6.5 - "regelmäßige (oder System)" Python 2.6.6 - Django 1.2.3

UPDATE:

Ich konnte uwsgi bekommen die Annahme von Anfragen zu starten, wenn ich die „--module“ weglassen wie folgt:

uwsgi --home /home/auston/new_proj --socket /tmp/uwsgi2.sock --chmod-socket --pp /home/auston/new_proj/nikeshere --logto /tmp/uwsgi.log --master --processes 4 -P

aber ich habe jetzt eine App nicht gefunden Fehler:

"uwsgi Fehler wsgi Anwendung nicht gefunden "

Ich bin näher, aber ich würde es begrüßen, noch Vorschläge, wie die App nicht gefunden wird, weil ich nicht das Modul umfassen kann benötigt es laden!

War es hilfreich?

Lösung

So wie oben erwähnt, das Problem wurde mit dem PYTHONPATH & es der Unfähigkeit, ein Modul mit dem Namen _functools zu finden.

Offensichtlich ist _functools ein c Modul & I benötigt, um die es in dem Weg zu dem PYTHONPATH um anhänge für sie, so dass die Differenz aus dem ursprünglichen wsgi.py gefunden, werden, ist nun:

import sys
sys.path.append('/usr/local/lib/python2.6/lib-dynload') # to load _functools
sys.path.append('/usr/local/lib/python2.6/site-packages') # to load django
sys.path.append('/usr/local/lib/python2.6/dist-packages') # cautionary to load django
sys.path.append('/usr/lib/python2.6') # to load os
import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'iwin.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

Sehr hacky, aber es funktioniert jetzt ...

Andere Tipps

Ich weiß, dass es die alte Thema und Versionen von Stack-Bausteine ??geändert, aber ich hatte das gleiche Problem mit nicht zu erkennen unter uwsgi Libs in virtualenv installiert. Die Lösung ist zu Punkt nach Hause Parametern virtualenv, wie weiter unten (genommen gezeigt von https: / /uwsgi.readthedocs.org/en/latest/tutorials/Django_and_nginx.html ).

Also für mich Befehl:

uwsgi --http :8000 --module ii.wsgi --home /home/dev/.virtualenvs/ii_env/

gearbeitet, während in der django Anwendung sein (ii) Verzeichnis.

# mysite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /path/to/your/project
# Django's wsgi file
module          = project.wsgi
# the virtualenv (full path)
home            = /path/to/virtualenv

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = /path/to/your/project/mysite.sock
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

Schauen Sie sich http://blog.zacharyvoase.com/2010 / 03/05 / django-uwsgi-nginx / . Er ist mit sehr ähnlichem Aufbau.

Ich habe sehr ähnliches Problem wurde und ich fand diese:

Bei der Installation von virtuelenv, ist es installiert "die Python-Standardbibliothek von Symlinks auf das Original (in wie /usr/lib/python2.7) zu schaffen. Aber wenn Sie Ihre virtualenv Python lib überprüfen, gibt es symbolische Links für nur wenige Basisbibliotheken erstellt. Ihre functools ist wahrscheinlich nicht unter ihnen.

So ist die Lösung, die die Symlink manuell zu erstellen. Es ist ein PITA, weil Sie eine Menge von Symlinks erstellen müssen, aber es scheint wie eine sauberere Lösung für mich. Sie müssen keine Quelldateien hacken und es ist transparent.

Die Symlink sollte nicht in der Wurzel des venv_directory erzeugt werden, sondern in z.

venv_directory/lib/python2.7/site-packages/

Hope es funktioniert für Sie!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top