web-dev-qa-db-ja.com

ImportError:Django.core.wsgiというモジュールはありませんApache + VirtualEnv + AWS + WSGI

AmazonのEC2インスタンスでサイトを公開しようとしていますが、500エラーが引き続き表示されます。なぜだかわからない。

//ログファイル

    [Sun Feb 17 23:12:48.066802 2013] mod_wsgi (pid=2102): Target WSGI script '/srv/www/app/poka/Apache/wsgi.py' cannot be loaded as Python module.
    [Sun Feb 17 23:12:48.066840 2013] mod_wsgi (pid=2102): Exception occurred processing WSGI script '/srv/www/app/poka/Apache/wsgi.py'.
    [Sun Feb 17 23:12:48.066864 2013] Traceback (most recent call last):
    [Sun Feb 17 23:12:48.066889 2013] File "/srv/www/mysite/poka/Apache/wsgi.py", line 26, in <module>
    [Sun Feb 17 23:12:48.066920 2013] from Django.core.wsgi import get_wsgi_application
    [Sun Feb 17 23:12:48.066945 2013] ImportError: No module named Django.core.wsgi

// Apache構成ファイル

    WSGIScriptAlias / /srv/www/app/mysite/Apache/wsgi.py

    WSGIDaemonProcess mysite python-path=/srv/www/app/mysite:/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages
    WSGIProcessGroup mysite

    <Directory /srv/www/app/mysite/Apache/>
    <Files wsgi.py>
    Order deny,allow
    Allow from all
    </Files>
    </Directory>

    <Directory /srv/www/app/mysite/Apache/>
    Order deny,allow
    Allow from all
    </Directory>

    <Directory /home/ec2-user/app/mysite/static>
    Order deny,allow
    Allow from all
    </Directory>

    <Directory /home/ec2-user/app/mysite/media>
    Order deny,allow
    Allow from all
    </Directory>

//wsgi.py

    import os
    import sys
    import site

    site.addsitedir('/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages')
    os.environ.setdefault("Django_SETTINGS_MODULE", "mysite.settings")

    from Django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

    path = '/srv/www/app/mysite'

    if path not in sys.path:
        sys.path.append(path)
34
abisson

私はこれが古いスレッドであることを知っていますが、私は同じ問題にぶつかりました。これはパッケージの欠落が原因ではないと思います。 Django=コアディストリビューションにはすでに正しいwsgiハンドラが含まれています。

ここでの問題は、wsgi.pyを実行すると、virtualenvからsite-packagesのパッケージが欠落することです。 (virtualenvをアクティベートし、pip install Djangoを実行した場合、すべてが正常です。必要なDjangoパッケージ)があります。

私の関係では、Path/to/Project/Project/wsgi.pyファイルのsys.pathを変更する問題を修正しました。

プロジェクトディレクトリとvirtualenvサイトパッケージをsys.pathリストに追加する必要があります。これは私のプロジェクトに含まれるwsgi.pyファイルです(Django-admin.py start-projectで作成されたwsgi.pyについて)... Apacheで動作させるために修正する必要がありました

# =====================
# wsgi.py file begin 

import os, sys
# add the hellodjango project path into the sys.path
sys.path.append('<PATH_TO_MY_Django_PROJECT>/hellodjango')

# add the virtualenv site-packages path to the sys.path
sys.path.append('<PATH_TO_VIRTUALENV>/Lib/site-packages')

# poiting to the project settings
os.environ.setdefault("Django_SETTINGS_MODULE", "hellodjango.settings")

from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# wsgi.py file end
# ===================

確認してください:

  1. mod_wsgiをApacheモジュールに追加しました。dirmod_wsgiはOS、Apache、およびPython

  2. mod_wsgiモジュールLoadModule wsgi_module modules/mod_wsgi.soをロードするために、ロードモジュールコマンドをhttpd.confに追加しました

  3. 設定済みDjango httpd.confの詳細またはhttpd.confに含めるconf

ドキュメントに基づいて 使用方法Django Apacheおよびmod_wsgiで

WSGIScriptAlias / <PATH_TO_PROJECT>/hellodjango/hellodjango/wsgi.py
WSGIPythonPath <PATH_TO_PROJECT>:<PATH_TO_VIRTUALENV>/Lib/site-packages

<Directory <PATH_TO_PROJECT>/hellodjango/hellodjango> 
  <Files wsgi.py>
    Order deny,allow
    Require all granted
  </Files>
</Directory>

お役に立てれば。それは私のために働いた。

36
Rabah B

これをApache構成ファイルに追加します。

WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main
7
Matt

私にとって、これはDjangoがサーバーにインストールされていなかったことを示しています。

pip install Django
3
Zags

今、同様のエラーが発生しました。 Django=コードはpython 3.5で開発されましたが、何らかの理由で、サーバーをデプロイした人はpython 2.7。python 3.5で再デプロイし、すべてが機能しました

以下は私が受け取ったエラーメッセージです:

$ python serviceStartup.py 
Traceback (most recent call last):
  File "serviceStartup.py", line 10, in <module>
    from Django.core.wsgi import get_wsgi_application
ImportError: No module named Django.core.wsgi

これが、同様のエラーメッセージが表示される場合に役立つことを願っています!

3
Lingster

私の友人はすべてうまく設定しました。Apacheユーザーにプロジェクトと仮想環境の両方にアクセスする許可を与えるだけです。

例:

Sudo chown -R www-data:www-data /home/ubuntu/projects
Sudo chown -R www-data:www-data /home/ubuntu/virtualenv

これで、ImportError: No module named Django.core.wsgi(virtualenvsフォルダー)およびImportError: No module named <project-name>.settings(プロジェクトフォルダー)の問題が解決しました

1
Cássio

一見したところ、英語がすみません。私もこの問題に直面し、「wsgi.py」ファイルを次のように変更することで解決しました。

 import os 
 import Django 
 from Django.core.handlers.wsgi import WSGIHandler 
 
 
 os.environ.setdefault( 「Django_SETTINGS_MODULE」、「eisentask.settings.production」)
 Django.setup(set_prefix = False)
 
 application = WSGIHandler()
0
user9205618