Apache/mod_wsgi/django/arch linux问题自64位升级以来,尽管能够导入所有库

2024-09-19 20:43:07 发布

您现在位置:Python中文网/ 问答频道 /正文

几个小时来我一直在想是什么导致了这个问题,但运气不好。你知道吗

自从将我的arch linux安装迁移到64位后,我发现我的django站点无法工作,出现错误500。我用的是python2,64位:

>>> import struct
>>> print struct.calcsize("P") * 8
64

我还有64位mod\uwsgi2:https://www.archlinux.org/packages/community/x86_64/mod_wsgi2/

下面是一个日志示例:

[Mon Feb 20 21:42:40.312829 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] mod_wsgi (pid=19537): Target WSGI script '/home/james/sites/dse/django.wsgi' cannot be loaded as Python module.
[Mon Feb 20 21:42:40.312872 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] mod_wsgi (pid=19537): Exception occurred processing WSGI script '/home/james/sites/dse/django.wsgi'.
[Mon Feb 20 21:42:40.312916 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] Traceback (most recent call last):
[Mon Feb 20 21:42:40.312953 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]   File "/home/james/sites/dse/django.wsgi", line 12, in <module>
[Mon Feb 20 21:42:40.312997 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]     from django.core.wsgi import get_wsgi_application
[Mon Feb 20 21:42:40.313006 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]   File "/usr/lib/python2.7/site-packages/django/__init__.py", line 3, in <module>
[Mon Feb 20 21:42:40.313056 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]     from django.utils.version import get_version
[Mon Feb 20 21:42:40.313066 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]   File "/usr/lib/python2.7/site-packages/django/utils/version.py", line 3, in <module>
[Mon Feb 20 21:42:40.313078 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]     import datetime
[Mon Feb 20 21:42:40.313103 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] ImportError: /usr/lib/python2.7/lib-dynload/datetime.so: wrong ELF class: ELFCLASS64
[Mon Feb 20 21:42:40.313185 2017] [access_compat:error] [pid 19537] [client 146.179.195.99:62898] AH01797: client denied by server configuration: /usr/share/httpd/error/HTTP_INTERNAL_SERVER_ERROR.html.var

所以,我试着手动导入所有这些东西,看看是否有错误,没有:

[james@tryptophan ~]$ python2
Python 2.7.13 (default, Dec 21 2016, 07:16:46)
[GCC 6.2.1 20160830] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> import django
>>> from django.core.wsgi import get_wsgi_application
>>> from django.utils.version import get_version

我查了一下我有: 加载模块wsgi\模块/mod_wsgi.so公司你知道吗

在我的httpd.conf文件,以及/home/james/sites/dse的内容/django.wsgi文件与此错误有关的文件在大约3年内没有更改(!)具体如下:

[james@tryptophan dse]$ cat django.wsgi
import os
import sys

sys.path.append('/home/james/sites/dse/django_dse')
sys.path.append('/home/james/sites/dse')

os.environ['DJANGO_SETTINGS_MODULE'] = 'django_dse.settings'

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

所以我不知道该怎么办。我的意思是听起来像是32/64位的兼容性问题,错误是ImportError:/usr/lib/python2.7/lib-dynload/日期时间.so:错误的ELF类:ELF类64-但我无法找出是什么导致了它。你知道吗

有什么想法吗?你知道吗


Tags: djangoimportclientwsgihomegetlib错误
1条回答
网友
1楼 · 发布于 2024-09-19 20:43:07

事实证明,错误实际上是在一个单独的apache模块中加载的,该模块不是64位的。我在我的电脑里装了一个32位的模块httpd.conf文件地址:

LoadModule fastcgi_module modules/mod_fastcgi.so

我实际上是通过运行'apachectl'程序来识别的,这个程序给了我一个与32位模块导入相关的错误。你知道吗

当这个被评论掉后,我所有的64位django网站都恢复了生机。我不知道为什么它会这样表现。。。你知道吗

相关问题 更多 >