wsgi.py no模块名为MySite



我正在尝试在Windows Server上的Apache上启动我的Django应用程序。我对wsgi.py文件有问题。我在服务器日志中有以下错误:

 mod_wsgi (pid=1332): Target WSGI script 'C:/Apache24/htdocs/OctopusWeb/wsgi.py' cannot be loaded as Python module.
 mod_wsgi (pid=1332): Exception occurred processing WSGI script 'C:/Apache24/htdocs/OctopusWeb/wsgi.py'.
 Traceback (most recent call last):r
   File "C:/Apache24/htdocs/OctopusWeb/wsgi.py", line 11, in <module>r
     import OctopusWebr
 ImportError: No module named 'OctopusWeb'r
 mod_wsgi (pid=1332): Target WSGI script 'C:/Apache24/htdocs/OctopusWeb/wsgi.py' cannot be loaded as Python module.
 mod_wsgi (pid=1332): Exception occurred processing WSGI script 'C:/Apache24/htdocs/OctopusWeb/wsgi.py'.
 Traceback (most recent call last):r
   File "C:/Apache24/htdocs/OctopusWeb/wsgi.py", line 11, in <module>r
     import OctopusWebr
 ImportError: No module named 'OctopusWeb'r
 mod_wsgi (pid=1332): Target WSGI script 'C:/Apache24/htdocs/OctopusWeb/wsgi.py' cannot be loaded as Python module.
 mod_wsgi (pid=1332): Exception occurred processing WSGI script 'C:/Apache24/htdocs/OctopusWeb/wsgi.py'.
 Traceback (most recent call last):r
   File "C:/Apache24/htdocs/OctopusWeb/wsgi.py", line 11, in <module>r
     import OctopusWebr
 ImportError: No module named 'OctopusWeb'r

OctopusWebsettings.pywsgi.py文件的文件夹的名称。

我的wsgi.py

import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "OctopusWeb.settings")
application = get_wsgi_application()

我使用的所有文件都在C:Apache24htdocs目录中。

你知道我做错了什么吗?

编辑:

我编辑的 wsgi.py为@joranbeasley写了

import os
os.environ['PYTHONPATH'] = os.path.abspath(os.path.dirname(__file__))
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "OctopusWeb.settings")
application = get_wsgi_application()

现在我会收到以下错误

   mod_wsgi (pid=1108): Target WSGI script 'C:/Apache24/htdocs/OctopusWeb/wsgi.py' cannot be loaded as Python module.
   mod_wsgi (pid=1108): Exception occurred processing WSGI script 'C:/Apache24/htdocs/OctopusWeb/wsgi.py'.
   Traceback (most recent call last):r
    File "C:/Apache24/htdocs/OctopusWeb/wsgi.py", line 16, in <module>r
      application = get_wsgi_application()r
    File "c:\python34\lib\site-packages\django\core\wsgi.py", line 13, in get_wsgi_applicationr
      django.setup(set_prefix=False)r
    File "c:\python34\lib\site-packages\django\__init__.py", line 22, in setupr
      configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)r
    File "c:\python34\lib\site-packages\django\conf\__init__.py", line 56, in __getattr__r
      self._setup(name)r
    File "c:\python34\lib\site-packages\django\conf\__init__.py", line 41, in _setupr
      self._wrapped = Settings(settings_module)r
    File "c:\python34\lib\site-packages\django\conf\__init__.py", line 110, in __init__r
      mod = importlib.import_module(self.SETTINGS_MODULE)r
    File "c:\python34\lib\importlib\__init__.py", line 109, in import_moduler
      return _bootstrap._gcd_import(name[level:], package, level)r
    File "<frozen importlib._bootstrap>", line 2254, in _gcd_importr
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_loadr
    File "<frozen importlib._bootstrap>", line 2212, in _find_and_load_unlockedr
    File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removedr
    File "<frozen importlib._bootstrap>", line 2254, in _gcd_importr
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_loadr
    File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlockedr
    ImportError: No module named 'OctopusWeb'r

您无法使用:

import os
os.environ['PYTHONPATH'] = os.path.abspath(os.path.dirname(__file__))

在此过程中设置PYTHONPATH为时已晚。

使用:

import os
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))

也阅读:

  • http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html

解释了如何设置Python虚拟环境和Python模块搜索路径。

您需要将该目录添加到系统路径或python路径,以便Python可以找到您的模块

import os
os.environ['PYTHONPATH'] = os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "OctopusWeb.settings")
application = get_wsgi_application()

最新更新