尝试使用apache2和mod_wsgi托管我的django项目。我已经试过各种配置,但要在浏览器访问该网站,例如当越来越导入错误:Apache/Django:ImportError:没有名为'my_project'的模块
Traceback (most recent call last):
File "/home/user/projects/my_projectMain/my_project/my_project/wsgi.py", line 19, in <module>
application = get_wsgi_application()
File "/usr/local/lib/python3.4/dist-packages/django/core/wsgi.py", line 13, in get_wsgi_application
django.setup(set_prefix=False)
File "/usr/local/lib/python3.4/dist-packages/django/__init__.py", line 22, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 53, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 41, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 97, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2212, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
ImportError: No module named 'my_project'
这里是我的目录结构(/家/用户/项目/ my_projectMain /):
-- my_projectEnv\ (virtualenv w/ python 3.5.2, django 1.10, django-bootstrap3, django-static-jquery==2.1.4)
-- my_project\
|-- app\
|-- manage.py
|-- static\
|-- my_project\
|-- | -- __init__.py
|-- | -- __pycache__
|-- | -- settings.py
|-- | -- wsgi.py
`-- | -- urls.py
wsgi.py:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")
application = get_wsgi_application()
/etc/apache2/sites-available/000-default.conf:
...
#ServerName www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/html
Alias /static /home/user/projects/my_projectMain/my_project/static
<Directory /home/user/projects/my_projectMain/my_project/static>
Require all granted
</Directory>
<Directory /home/user/projects/my_projectMain/my_project/my_project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess my_project python-path=/home/user/projects python-home=/home/user/projects/my_projectMain/my_projectEnv
WSGIProcessGroup my_project
WSGIScriptAlias//home/user/projects/my_projectMain/my_project/my_project/wsgi.py
...
我很担心我的目录结构是问题,但也看到很多与wsgi.py中路径相关的其他帖子不正确。
编辑: 如果我改变的python-路径:
WSGIDaemonProcess my_project python-path=/home/user/projects/my_projectMain/my_project/my_project
我得到:
Traceback (most recent call last):
File "/home/user/projects/my_projectMain/my_project/my_project/wsgi.py", line 25, in <module>
application = get_wsgi_application()
File "/usr/local/lib/python3.4/dist-packages/django/core/wsgi.py", line 13, in get_wsgi_application
django.setup(set_prefix=False)
File "/usr/local/lib/python3.4/dist-packages/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/local/lib/python3.4/dist-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/usr/local/lib/python3.4/dist-packages/django/apps/config.py", line 90, in create
module = import_module(entry)
File "/usr/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
ImportError: No module named 'django_static_jquery'
- 这是否意味着我已经得到了过去,它不能够导入my_project?
- 我已经运行了collectstatic并确保static_jquery在我的STATIC_ROOT中,它怎么能不能导入已安装的应用程序?
可能不相关,但不能将Python 3.4编译的mod_wsgi与使用Python 3.5构建的Python虚拟环境配合使用。混合这些流是不好的,会导致各种问题。请参阅http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html,它会对此提出警告。 –
我也注意到了,只要您认为它与上述问题无关,我会稍后再解决。 – brewcrazy
我会先修复它。如果没有正确匹配,没有保证。还要检查你的目录/文件是否具有Apache运行的用户可访问的权限。 –