【发布时间】:2019-11-21 07:55:51
【问题描述】:
我想部署 Djanogo Celery 应用程序,我遇到了错误 ModuleNotFoundError: No module named Xyz 但是当我转到 manage.py 所在的文件夹并运行 python3 manage.py runserver 时,我可以看到服务器在本地端口 8000 上运行,但是
mod_wsgi (pid=25901): Failed to exec Python script file '/var/www/celeryEnv/vcs_celery/parsing_hub/parsing_hub/wsgi.py'.
mod_wsgi (pid=25901): Exception occurred processing WSGI script '/var/www/celeryEnv/vcs_celery/parsing_hub/parsing_hub/wsgi.py'.
Traceback (most recent call last):
File "/var/www/celeryEnv/vcs_celery/parsing_hub/parsing_hub/wsgi.py", line 16, in <module>
application = get_wsgi_application()
File "/var/www/celeryEnv/lib64/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
django.setup(set_prefix=False)
File "/var/www/celeryEnv/lib64/python3.6/site-packages/django/__init__.py", line 19, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/var/www/celeryEnv/lib64/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File "/var/www/celeryEnv/lib64/python3.6/site-packages/django/conf/__init__.py", line 43, in _setup
self._wrapped = Settings(settings_module)
File "/var/www/celeryEnv/lib64/python3.6/site-packages/django/conf/__init__.py", line 106, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'parsing_hub'
我用python3 -m venv celeryEnv 配置了virtualenv
我在 /etc/httpd/conf.d/celery.conf 中的配置是这样的:
<VirtualHost *:8099>
ServerName server
ServerAlias server
ServerAdmin admin@admin.com
DocumentRoot /var/www/vcs_celery/parsing_hub
WSGIDaemonProcess celeryEnv python-path=/var/www/celeryEnv/lib/python3.6/site-packages user=apache group=apache python-home=/var/www/celeryEnv
WSGIProcessGroup celeryEnv
WSGIScriptAlias / /var/www/vcs_celery/parsing_hub/parsing_hub/wsgi.py
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/custom.log combined
Alias /static /var/www/celery/vcs_celery/parsing_hub/static
<Directory /var/www/celery/vcs_celery/parsing_hub/static>
Require all granted
</Directory>
</VirtualHost>
我认为 apache 无法识别 vierualenv 但因为我是设置 python wsgi 的初学者我不知道 我应该怎么做才能使它工作,欢迎任何帮助
编辑 我做了这个Can't run Apache2 with virtualenv 现在我看到 apache 看到 vietualenv 但错误是一样的
编辑 2
pip freeze
amqp==2.5.2
Babel==2.7.0
beautifulsoup4==4.6.0
billiard==3.5.0.5
celery==4.1.0
cffi==1.13.2
cryptography==2.8
cssselect==1.1.0
Django==2.0.4
django-bootstrap3==10.0.1
django-celery-beat==1.1.1
flower==0.9.2
geopy==1.11.0
jusText==2.2.0
kombu==4.1.0
lxml==4.4.1
mod-wsgi==4.6.8
mysqlclient==1.3.12
nltk==3.2.5
numpy==1.17.4
pandas==0.20.3
parsel==1.4.0
pycparser==2.19
pyOpenSSL==17.5.0
python-dateutil==2.8.1
python-gitlab==1.1.0
pytz==2019.3
requests==2.12.4
selenium==2.53.1
six==1.13.0
SQLAlchemy==1.1.13
tornado==6.0.3
urllib3==1.25.7
vine==1.3.0
w3lib==1.21.0
**编辑 3 **
wsgi.py 文件的内容
"""
WSGI config for parsing_hub project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "parsing_hub.settings")
application = get_wsgi_application()
【问题讨论】: