Python / Django / WSGI / Apache - “ImportError: Tidak ada modul yang bernama situs”

8

Saya mencoba menggunakan aplikasi Django di mesin ubuntu lokal saya. Namun situs tersebut tidak berfungsi dan saya /var/log/apache2/errors.logdipenuhi dengan pesan-pesan seperti ini:

ImportError: No module named site

My /var/log/apache2/error.log(untuk hari ini) terlihat seperti ini:

$ cat error.log | uniq -c
      1 [Wed Jun 29 09:37:37 2011] [notice] Apache/2.2.17 (Ubuntu) mod_wsgi/3.3 Python/2.7.1+ configured -- resuming normal operations
  12966 ImportError: No module named site

Itu pemberitahuan bahwa itu dimulai ketika saya menghidupkan mesin saya, diikuti oleh 12.966 baris semua mengatakan no module named sitepesan

perhatikan kurangnya bidang datetime. Kesalahan ini berulang bahkan ketika tidak pergi ke situs web (yaitu bahkan ketika tidak membuat permintaan web). Ketika pergi ke situs web di browser, itu hanya hang, seolah menunggu unduhan besar.

Pengaturan

Modul Apache

Saya menggunakan virtualenv python 2.5 dengan banyak paket (termasuk. Django 1.1) diinstal dengan pip. Saya telah memuat mod_wsgi:

$ ls -l /etc/apache2/mods-enabled/wsgi*
lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.conf -> ../mods-available/wsgi.conf
lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.load -> ../mods-available/wsgi.load

Saya menggunakan "tix" sebagai nama domain yang disetel ke localhost di /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

Konfigurasi Apache

Ini adalah konfigurasi apache saya (Anda dapat melihat beberapa upaya untuk membuatnya berfungsi, berkomentar, dll.) :

# mod-wsgi enabled virtual host
WSGISocketPrefix /home/rory/tix/tix_wsgi/tmp
WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/
UnSetEnv PYTHONSTARTUP
SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/
#WSGIPythonEggs /home/rory/svn/tix/tmp/python-eggs

<VirtualHost 127.0.0.1:80>
    ServerName tix

    Alias /media /home/rory/tix/tix/media
    Alias /selenium /home/rory/tix/tix/tests/selenium

    <Directory /home/rory/tix/tix/media>
        SetHandler None
        Order allow,deny
        Allow from all
    </Directory>

    WSGIDaemonProcess tix user=tix_wsgi group=tix_wsgi processes=4 threads=1           python-path=/home/rory/tix/virtualenv2.5/lib/python2.5/site-packages

    WSGIScriptAlias / /home/rory/tix/tix/apache/loader.wsgi
    WSGIProcessGroup tix

    CustomLog /var/log/apache2/tix_access.log combined
    ErrorLog /var/log/apache2/tix_error.log


<Location /server-status>
    SetHandler server-status
    Order Deny,Allow
    Deny from all
</Location>

  <IfModule rewrite_module>
      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^media.tix$ [NC]
      RewriteRule .? http://tix/media%{REQUEST_URI} [R=301,L]
  </IfModule>
</VirtualHost>

pemuat wsgi

Ini adalah loader.wsgi saya:

Dulu saya ada import sitedi file ini, yang saya pikir mungkin menyebabkan masalah, tapi saya menghapusnya dan kesalahan terus muncul.

# loader.wsgi - WSGI adapter for tix django project
# The python paste wrapper catches apache 500 errors (Internal Server Errors) and gives debug output
# See http://pythonpaste.org/modules/exceptions.html
import os
import sys

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

from paste.exceptions.errormiddleware import ErrorMiddleware

import django.core.handlers.wsgi
tixette = django.core.handlers.wsgi.WSGIHandler()

application = ErrorMiddleware(tixette, debug=True, error_email='[email protected]', error_subject_prefix='Alert: wsgi loader python paste: ', error_log='/tix/1.0/logs/paste.log',  show_exceptions_in_wsgi_errors=False)

Konfigurasi ini berfungsi dengan baik di Ubuntu 10.10, tetapi karena saya meningkatkan ke Ubuntu 11.04, saya mendapatkan kesalahan di atas.

Rory
sumber

Jawaban:

6

Mod_wsgi Anda dikompilasi untuk Python 2.7. Anda tidak dapat kemudian mencoba dan mengarahkannya ke lingkungan virtual Python 2.5.

Juga, pengaturan:

WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/

menunjuk pada hal yang salah bahkan jika itu adalah lingkungan virtual Python 2.7.

Pengaturan:

UnSetEnv PYTHONSTARTUP
SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/

juga tidak akan melakukan apa pun dan tidak tahu dari mana Anda mendapat ide itu.

FWIW, dokumentasi mod_wsgi pada lingkungan virtual dapat ditemukan di:

https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environmentments.html

Ini tidak akan membantu Anda karena Anda tampaknya memiliki masalah yang lebih mendasar dengan instalasi mod_wsgi dan Python Anda. Masalahnya berpotensi menjadi varian dari:

https://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html#multiple-python-versions

Di mana Anda mendapatkan mod_wsgi.so yang Anda gunakan?

Di mana Python 2.7 diinstal?

Apa versi Python lain yang telah Anda instal dan di mana?

Graham Dumpleton
sumber