3

サーバー上にいくつかのdjangoアプリがあり、独自のソケットファイルで完全に実行されていますが、さらにいくつかのdjangoアプリを導入する予定なので、vhostモードでuwsgiを実行することを好みますが、import/に問題があるようです。パス

これがnginx仮想ホスト構成です

location / {

    include uwsgi_params;

    uwsgi_param UWSGI_PYHOME /home/httpd/django.udm.local/public_html;
    uwsgi_param UWSGI_PYHOME /home/httpd/django.udm.local/public_html;
    uwsgi_param UWSGI_PYTHONPATH /home/httpd/django.udm.local/public_html;
    uwsgi_param UWSGI_CHDIR /home/httpd/django.udm.local/public_html
    uwsgi_param UWSGI_ENV DJANGO_SETTINGS_MODULE=settings;
    uwsgi_param UWSGI_MODULE mysite;

    uwsgi_pass  127.0.0.1:1088;

そして「mysite.py」ファイルに私はこれを持っています:

import os, sys

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

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

import django.core.handlers.wsgi

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

私はこのコマンドでuwsgiを実行しています:

uwsgi -s 127.0.0.1:1088 -M --no-site --vhost 

ここにエラーがあります

*** Operational MODE: single process ***
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 1838)
spawned uWSGI worker 1 (pid: 1839, cores: 1)
Traceback (most recent call last):
  File "./mysite.py", line 7, in <module>
    import django.core.handlers.wsgi
ImportError: No module named django.core.handlers.wsgi
unable to load app SCRIPT_NAME=django.udm.local|

ご想像のとおり、djangoはシステムに正しくインストールされています

# python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django.core.handlers.wsgi
>>> 

ありがとう!

UPDATE 18/8ついに解決策を見つけました。mysite.pyファイルを変更し、djangoとpythonlibsへのパスを追加しました。

import os, sys

sys.path.append(os.path.dirname(__file__))
sys.path.append('/usr/lib/pymodules/python2.6')
sys.path.append('/usr/lib/python2.6/dist-packages')

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

import django.core.handlers.wsgi

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

2 に答える 2

1

UWSGI_PYHOMEはvirtualenvを設定するため、virtualenvの下にない場合は、それを削除する必要があります。この構成に興味があるかもしれません:http://projects.unbit.it/uwsgi/wiki/TipsAndTricks

于 2011-08-16T17:56:22.623 に答える
0

wsgiファイルに追加するのは正しくないと思います。それを行うと、実際にはハードコーディングされます。

コードを別のシステムや別のバージョンの Python にデプロイするとどうなるでしょうか? おそらくpython2.6、python2.7などなので、デプロイされたサーバーに正しいsys.pathを追加する必要があります。

于 2015-09-02T06:08:56.243 に答える