Docker容器迁移后uWSGI运行报错"ImportError: No module named datetime"
在将Docker容器从主机A迁移到主机B之后,启动uwsgi服务后发现有报错
*** Operational MODE: preforking ***
Traceback (most recent call last):
File "./my_django_app/wsgi.py", line 12, in <module>
from django.core.wsgi import get_wsgi_application
File "/home/admin/venv2/lib/python2.7/site-packages/django/__init__.py", line 3, in <module>
from django.utils.version import get_version
File "/home/admin/venv2/lib/python2.7/site-packages/django/utils/version.py", line 3, in <module>
import datetime
ImportError: No module named datetime
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode **
照理Docker容器迁移应该时完全一致才对,为何会出现找不到模块datetime呢?
此外,通过WEB访问显示错误Internal Server Error
尝试了两次迁移Docker容器,出现的报错信息完全一样。
排查
去除uwsgi,直接通过Django访问是正常的
python manage.py runserver 0:8000
是什么原因导致的加载错误?
不过,第二次尝试迁移Docker容器,没有执行过更改用户uid/gid,一样报错。
尝试手工启动uwsgi:(my_django_app是Django项目)
cd my_django_app
uwsgi --socket /home/admin/venv2/sock --chmod-socket=664
有提示信息
*** Operational MODE: single process ***
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
访问web,再次出现Internal Server Error
修改 my_django_app_uwsgi.ini
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /home/admin/my_django_app
# Django's wsgi file
app = my_django_app
module = %(app)
# the virtualenv (full path)
home = /home/admin/venv2
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = /home/admin/venv2/sock
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
*** Operational MODE: preforking ***
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** Operational MODE: preforking ***
Traceback (most recent call last):
File "./my_django_app/wsgi.py", line 12, in <module>
from django.core.wsgi import get_wsgi_application
File "/home/admin/venv2/lib/python2.7/site-packages/django/__init__.py", line 3, in <module>
from django.utils.version import get_version
File "/home/admin/venv2/lib/python2.7/site-packages/django/utils/version.py", line 3, in <module>
import datetime
ImportError: No module named datetime
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***