简体   繁体   中英

Django+Apache ModuleNotFoundError: No module named 'myproject'

I have a problem with Apache2.4 + mod_wsgi + Python3.6 (on win10 x64).
When I'm trying to access site, i receive this error in Apache:

[Wed Mar 22 22:52:19.162397 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227] mod_wsgi (pid=10872): Target WSGI script 'C:/wampstack-5.6.30-1/apache2/htdocs/myproject/myproject/wsgi.py' cannot be loaded as Python module.
[Wed Mar 22 22:52:19.162397 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227] mod_wsgi (pid=10872): Exception occurred processing WSGI script 'C:/wampstack-5.6.30-1/apache2/htdocs/myproject/myproject/wsgi.py'.
[Wed Mar 22 22:52:19.163396 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227] Traceback (most recent call last):\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "C:/wampstack-5.6.30-1/apache2/htdocs/myproject/myproject/wsgi.py", line 16, in <module>\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]     application = get_wsgi_application()\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "c:\\program files\\python36\\lib\\site-packages\\django\\core\\wsgi.py", line 13, in get_wsgi_application\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]     django.setup(set_prefix=False)\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "c:\\program files\\python36\\lib\\site-packages\\django\\__init__.py", line 22, in setup\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "c:\\program files\\python36\\lib\\site-packages\\django\\conf\\__init__.py", line 53, in __getattr__\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]     self._setup(name)\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "c:\\program files\\python36\\lib\\site-packages\\django\\conf\\__init__.py", line 41, in _setup\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]     self._wrapped = Settings(settings_module)\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "c:\\program files\\python36\\lib\\site-packages\\django\\conf\\__init__.py", line 97, in __init__\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]     mod = importlib.import_module(self.SETTINGS_MODULE)\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "c:\\program files\\python36\\lib\\importlib\\__init__.py", line 126, in import_module\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]     return _bootstrap._gcd_import(name[level:], package, level)\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "<frozen importlib._bootstrap>", line 978, in _gcd_import\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "<frozen importlib._bootstrap>", line 961, in _find_and_load\r
[Wed Mar 22 22:52:19.163893 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "<frozen importlib._bootstrap>", line 936, in _find_and_load_unlocked\r
[Wed Mar 22 22:52:19.164394 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed\r
[Wed Mar 22 22:52:19.164394 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "<frozen importlib._bootstrap>", line 978, in _gcd_import\r
[Wed Mar 22 22:52:19.164394 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "<frozen importlib._bootstrap>", line 961, in _find_and_load\r
[Wed Mar 22 22:52:19.164394 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227]   File "<frozen importlib._bootstrap>", line 948, in _find_and_load_unlocked\r
[Wed Mar 22 22:52:19.164394 2017] [wsgi:error] [pid 10872:tid 1256] [client 176.8.x.x:32227] ModuleNotFoundError: No module named 'myproject'\r
[Wed Mar 22 22:52:19.768710 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229] mod_wsgi (pid=10872): Target WSGI script 'C:/wampstack-5.6.30-1/apache2/htdocs/myproject/myproject/wsgi.py' cannot be loaded as Python module., referer: http://mysite/
[Wed Mar 22 22:52:19.768710 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229] mod_wsgi (pid=10872): Exception occurred processing WSGI script 'C:/wampstack-5.6.30-1/apache2/htdocs/myproject/myproject/wsgi.py'., referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229] Traceback (most recent call last):\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "C:/wampstack-5.6.30-1/apache2/htdocs/myproject/myproject/wsgi.py", line 16, in <module>\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]     application = get_wsgi_application()\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "c:\\program files\\python36\\lib\\site-packages\\django\\core\\wsgi.py", line 13, in get_wsgi_application\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]     django.setup(set_prefix=False)\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "c:\\program files\\python36\\lib\\site-packages\\django\\__init__.py", line 22, in setup\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "c:\\program files\\python36\\lib\\site-packages\\django\\conf\\__init__.py", line 53, in __getattr__\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]     self._setup(name)\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "c:\\program files\\python36\\lib\\site-packages\\django\\conf\\__init__.py", line 41, in _setup\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]     self._wrapped = Settings(settings_module)\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "c:\\program files\\python36\\lib\\site-packages\\django\\conf\\__init__.py", line 97, in __init__\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]     mod = importlib.import_module(self.SETTINGS_MODULE)\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "c:\\program files\\python36\\lib\\importlib\\__init__.py", line 126, in import_module\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]     return _bootstrap._gcd_import(name[level:], package, level)\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "<frozen importlib._bootstrap>", line 978, in _gcd_import\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "<frozen importlib._bootstrap>", line 961, in _find_and_load\r, referer: http://mysite/
[Wed Mar 22 22:52:19.769712 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "<frozen importlib._bootstrap>", line 936, in _find_and_load_unlocked\r, referer: http://mysite/
[Wed Mar 22 22:52:19.770211 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed\r, referer: http://mysite/
[Wed Mar 22 22:52:19.770211 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "<frozen importlib._bootstrap>", line 978, in _gcd_import\r, referer: http://mysite/
[Wed Mar 22 22:52:19.770211 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "<frozen importlib._bootstrap>", line 961, in _find_and_load\r, referer: http://mysite/
[Wed Mar 22 22:52:19.770211 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229]   File "<frozen importlib._bootstrap>", line 948, in _find_and_load_unlocked\r, referer: http://mysite/
[Wed Mar 22 22:52:19.770211 2017] [wsgi:error] [pid 10872:tid 1360] [client 176.8.x.x:32229] ModuleNotFoundError: No module named 'myproject'\r, referer: http://mysite/

Here are my config files:

wsgi.py:

import os
from django.core.wsgi import get_wsgi_application
os.environ["DJANGO_SETTINGS_MODULE"] = "myproject.settings"
application = get_wsgi_application()

settings.py:

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

SECRET_KEY = 'secret_key_here'

DEBUG = False

ALLOWED_HOSTS = ['mysite']

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'site.apps.SiteConfig',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'myproject.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'myproject.wsgi.application'


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'name',
        'USER': 'root',
        'PASSWORD': 'pass',
        'HOST': 'host',
        'PORT': '3306',
    }
}

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

STATIC_URL = '/static/'
STATIC_ROOT = 'C:/wampstack-5.6.30-1/apache2/htdocs/static.mysite/'
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

httpd-vhosts.conf (Apache):

<VirtualHost *:80>
WSGIScriptAlias / "C:/wampstack-5.6.30-1/apache2/htdocs/myproject/myproject/wsgi.py"

ServerName mysite
Alias /static "C:/wampstack-5.6.30-1/apache2/htdocs/myproject/static"

<Directory "C:/wampstack-5.6.30-1/apache2/htdocs/myproject">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

In httpd.conf I've been added this code for normal mod_wsgi start:

LoadFile "c:/program files/python36/python36.dll"
LoadModule wsgi_module "c:/program files/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonPath "c:/program files/python36;C:/program files/Python36/Lib;C:/program files/Python36/Lib/site-packages;C:/program files/Python36/DLLs"
WSGIPythonHome "c:/program files/python36"

PS ' myproject ' - name of project; ' mysite ' - name of the site.

Added this to my wsgi.py:

sys.path.append('/home/django_projects/MyProject')
sys.path.append('/home/django_projects/MyProject/myproject')

All works fine now :)

I had this error in my django project which I had deployed in apache virtual host:

ImportError: No module named 'mysite'

It was because of wrong configuration in my vhost in apache. I has set django 1.9 config and I corrected it to Django 2.0 correct and simple config:

WSGIDaemonProcess example.com python-home=/path/to/venv python-path=/path/to/mysite.com
WSGIProcessGroup example.com

refference

Django 2: https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/modwsgi/#daemon-mode Django 1.9: : https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/#daemon-mode

As I was using WSGIDaemonProcess (as recommened in various places) I chose to add python-path onto that line of my apache app.conf file. Note the Django docs mention that WSGIPythonPath doesn't work when using WSGIDaemonProcess.

The line in my app.conf is thus:

WSGIDaemonProcess app python-home=/usr/share/virtualenvs/myapp user=myappuser threads=15 python-path=/my/app/installed/dir/

I preferred this to setting the path in wsgi.py because it meant not having to write more meta-config to deal with the different paths between my development (laptop) and production servers. I'm pretty new to this so would a) welcome any comments b) not follow this answer blindly!

@Anders_k and @etlds

I'm still in the middle of fine tuning things I had the same issue. I updated my wsgi.py file to add my project paths and it worked, but I don't want to do it that way because wsgi.py is managed in my git repo and will change depending on the machine I have the project checked out on.

I was able to add my project to my WGSIPythonPath in my apache httpd.conf instead and it seems to be functioning.

WSGIPythonPath "c:/python37;E:/GitProjects/bio_sci_site/"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM