2

OK、それで、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

ほとんど何があっても、私はこれを取得します:

*** 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

--home を /usr/local/lib/python/2.6 に変更すると、OS の app_wsgi.py インポートに失敗します。念のため、以下に示します。

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()

基本的に、uWSGI に functools を認識させる方法、または正しいパスを取得する方法を尋ねています (パスは上記の出力にあります)。皆さんの助けをいただければ幸いです!!

PS Ubuntu 10.04 - uWSGI 0.9.6.5 - NGINX 0.8.53 - 仮想環境 Python 2.6.5 - 「通常 (またはシステム)」 Python 2.6.6 - Django 1.2.3

アップデート:

次のように「--module」を省略した場合、uwsgi にリクエストの受け入れを開始させることができました。

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

しかし今、アプリが見つからないというエラーが表示されます:

「uWSGI エラー wsgi アプリケーションが見つかりません」

私は近づいていますが、アプリをロードするために必要なモジュールを含めることができないため、アプリが見つからないため、提案をいただければ幸いです!

4

4 に答える 4

1

上記のように、問題は pythonpath にあり、_functools という名前のモジュールを見つけることができません。

どうやら、_functools は ac モジュールであり、そのパスを pythonpath に追加して見つけられるようにする必要があったため、元の wsgi.py との違いは次のとおりです。

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()

非常にハックですが、今のところ機能します...

于 2010-10-21T20:48:22.520 に答える
0

私は非常によく似た問題を抱えていて、これを見つけました:

美徳lenvをインストールすると、元のライブラリへのシンボリックリンクを作成することにより、Python標準ライブラリが「インストール」されます(/ usr/lib/python2.7など)。しかし、virtualenv Python lib ディレクトリを確認すると、いくつかの基本的なライブラリに対してのみシンボリック リンクが作成されています。あなたの functools はおそらくそれらの中にありません。

したがって、解決策はシンボリックリンクを手動で作成することです。多くのシンボリックリンクを作成する必要があるかもしれないので、これは PITA ですが、私にはよりクリーンなソリューションのように思えます。ソース ファイルをハックする必要はなく、透過的です。

シンボリックリンクは、のルートではvenv_directoryなく、たとえば

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

それがあなたのために働くことを願っています!

于 2012-02-24T11:28:46.167 に答える
0

http://blog.zacharyvoase.com/2010/03/05/django-uwsgi-nginx/をチェックしてください。彼は非常によく似たセットアップを使用しています。

于 2010-10-21T11:49:41.377 に答える