簡體   English   中英

Django + mod_wsgi + apache2:ImportError:未命名模塊<project>

[英]Django + mod_wsgi + apache2: ImportError: No module named <project>

我試圖深入了解有關在django項目上運行任何“ migrate”命令的問題。 我在虛擬環境中部署了django應用程序,並使用mod_wsgi和apache2在www.mysite.com/test/simulatore上正確提供了該應用程序。 當我編輯模型時出現問題,所以我必須運行

python manage.py makemigrations

經過一些初步的故障排除,我認為我已經在wsgi.py上隔離了問題
如果我嘗試(從我的virtualenv)嘗試運行命令

python -i /home/carma/mycarma_test/mycarma/mycarma/wsgi.py

這是結果

['/home/carma/mycarma_test/mycarma/mycarma', '/home/carma/mycarma/testenv/lib/python35.zip', '/home/carma/mycarma/testenv/lib/python3.5', '/home/carma/mycarma/testenv/lib/python3.5/plat-x86_64-linux-gnu', '/home/carma/mycarma/testenv/lib/python3.5/lib-dynload', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/home/carma/mycarma/testenv/lib/python3.5/site-packages', '/home/carma/mycarma_test/mycarma/mycarma/..', '/home/carma/mycarma_test', '/home/carma/mycarma_test/mycarma']
Traceback (most recent call last):
  File "/home/carma/mycarma_test/mycarma/mycarma/wsgi.py", line 22, in <module>
    application = get_wsgi_application()
  File "/home/carma/mycarma/testenv/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/home/carma/mycarma/testenv/lib/python3.5/site-packages/django/__init__.py", line 22, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/home/carma/mycarma/testenv/lib/python3.5/site-packages/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/home/carma/mycarma/testenv/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/carma/mycarma/testenv/lib/python3.5/site-packages/django/conf/__init__.py", line 97, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/home/carma/mycarma/testenv/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 944, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named '”mycarma'

如您所見,模塊mycarma(即項目名稱)以單引號和只是初始雙引號報告

ImportError: No module named '”mycarma'

這告訴我(我認為)某個地方傳遞了錯誤的參數,但我找不到位置的配置問題。 這是我的設置:

目錄結構

mycarma_test
└── mycarma
├── manage.py
├── mycarma
│   ├── development_settings.py
│   ├── __init__.py
│   ├── settings.py
│   ├── test_settings.py
│   ├── urls.py
│   └── wsgi.py
├── requirements
│   ├── common.txt
│   ├── dev.txt
│   ├── prod.txt
│   └── test.txt
├── simulatore
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
└── templates
    ├── base.html
    ├── registration
    │   └── login.html
    └── simulatore
        └── index.html

在mycarma / mycarma中歸檔wsgi

import os
import sys

from django.core.wsgi import get_wsgi_application

DJANGO_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')
sys.path.append(DJANGO_PATH)
sys.path.append('/home/carma/mycarma_test')
sys.path.append('/home/carma/mycarma_test/mycarma')
print(sys.path)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mycarma.settings")

application = get_wsgi_application()

請注意,我添加了兩個附錄和打印件以進行測試/疑難解答。 但也沒有他們就沒有運氣。 settings.py

ROOT_URLCONF = 'mycarma.urls'
STATIC_URL = '/static/'
STATIC_ROOT = '/home/carma/mycarma/static'

Apache2 conf文件

        <Directory /home/carma/mycarma/static>
            Require all granted
    </Directory>

    WSGIDaemonProcess pydaemon-1 processes=1 threads=5 python-path=/home/carma/mycarma/ python-home=/home/carma/mycarma/mycarmaenv
    WSGIDaemonProcess pydaemon-2 processes=1 threads=5 python-path=/home/carma/mycarma_test/mycarma/ python-home=/home/carma/mycarma/testenv

    WSGIScriptAlias /simulatore /home/carma/mycarma/mycarma/wsgi.py

    <Location /simulatore>
            WSGIProcessGroup pydaemon-1
            WSGIApplicationGroup %{GLOBAL}
    </Location>
    <Directory /home/carma/mycarma/mycarma>
            <Files wsgi.py>
                    Require all granted
            </Files>
    </Directory>

    WSGIScriptAlias /test /home/carma/mycarma_test/mycarma/mycarma/wsgi.py

    <Location /test>
            WSGIProcessGroup pydaemon-2
            WSGIApplicationGroup %{GLOBAL}
    </Location>
    <Directory /home/carma/mycarma_test/mycarma/mycarma>
            <Files wsgi.py>
                    Require all granted
            </Files>
    </Directory>

謝謝。

編輯:發現問題在dev bin / activate腳本中

DJANGO_SETTINGS_MODULE=”carma.test_settings”

用一些奇怪的雙引號。 修改,一切正常。

我很確定那是因為您在INSTALLED_APPS django配置中有多余的雙引號。 當Django引導並嘗試加載所有應用程序而找不到它時,就會發生這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM