问题我升级的Python 2.5到2.6,但现在得到“导入错误:没有模块名为tagging.views”
的问题:它似乎像tagging
模块,我有我的/srv/python-environments/saltycrane/lib/python2.5/site-packages/tagging
没有被包括在内,因为我将系统升级到了2.6,尽管我假设在virtualenv模式下依赖2.5。
这里的错误/var/log/apache2/error.log
:
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] mod_wsgi (pid=10470): Exception occurred processing WSGI script '/srv/workarounds/apache/django.wsgi'.
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] File "/usr/lib/pymodules/python2.6/django/core/handlers/wsgi.py", line 241, in __call__
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] response = self.get_response(request)
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py", line 141, in get_response
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] return self.handle_uncaught_exception(request, resolver, sys.exc_info())
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py", line 176, in handle_uncaught_exception
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] if resolver.urlconf_module is None:
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py", line 239, in _get_urlconf_module
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] self._urlconf_module = import_module(self.urlconf_name)
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] File "/usr/lib/pymodules/python2.6/django/utils/importlib.py", line 35, in import_module
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] __import__(name)
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] File "/srv/workarounds/urls.py", line 3, in <module>
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] from tagging.views import tagged_object_list
[Thu Mar 24 00:08:35 2011] [error] [client 127.0.0.1] ImportError: No module named tagging.views
我的设置
首先,这里是我的设置:
$ python --version
Python 2.6.6
$ python
>>> import django
django.VERSION
(1, 2, 3, 'final', 0)
我的Django项目住在/srv
。我的虚拟ENVS住在/srv/python-environments
如果我cd
到/srv/
做:
source python-environments/saltycrane/bin/activate
Python的版本就变成了:
$ python --version
Python 2.5.2
我的项目,/srv/workarounds
使用/srv/workarounds/apache/django.wsgi
,它是由:
import os, sys, site
virtualenv = '/srv/python-environments/saltycrane/'
ALLDIRS = [os.path.join(virtualenv, 'lib', 'python%s' % sys.version[:3], 'site-packages')]
# Remember original sys.path.
prev_sys_path = list(sys.path)
# Add project directory
sys.path.append('/srv/')
sys.path.append('/srv/workarounds/')
for directory in ALLDIRS:
site.addsitedir(directory)
new_sys_path = []
for item in list(sys.path):
if item not in prev_sys_path:
new_sys_path.append(item)
sys.path.remove(item)
sys.path[:0] = new_sys_path
os.environ['DJANGO_SETTINGS_MODULE'] = 'workarounds.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
当Apache运行wsgi时,代码基本上将/srv/
和/srv/workarounds
添加到python路径中。
SO ....
如何调整我的wsgi使用Python 2.5.2,而不是2.6,以保持?或者,如果没有,我如何更新我的virtualenv使用Python 2.6包与pip
?
THINGS IM不知道
也许它运行在2.6和确实抢
tagging
模块,但标记模块或它的一部分是不兼容的,所以这就是为什么它抱怨No module named tagging.views
?也许这与2.5到2.6无关,并始终存在?但是我非常怀疑这是因为我在代码中执行了几次重新启动,并且它工作正常。
它可能是一个Django微妙的版本更新,我可能已经更新1.1或1.2beta到1.2.3最后。
编辑:如果我有权利mod_wsgi.so,它编译为2.6。
/usr/lib/apache2/modules$ ldd mod_wsgi.so
linux-gate.so.1 => (0xf57fe000)
libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0xb760f000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb75f6000)
libdl.so.2 => /lib/libdl.so.2 (0xb75f2000)
libutil.so.1 => /lib/libutil.so.1 (0xb75ed000)
libm.so.6 => /lib/libm.so.6 (0xb75c7000)
libc.so.6 => /lib/libc.so.6 (0xb7482000)
libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb7438000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb72e0000)
libz.so.1 => /usr/lib/libz.so.1 (0xb72cc000)
/lib/ld-linux.so.2 (0xb788e000)
能够前给出正确的建议,你需要验证编译的Python mod_wsgi的版本。参见'http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python_Shared_Library'来解决这个问题。 – 2011-03-24 08:25:09
@Graham Dumpleton - 我做了一个'sudo查找。从'/'命名'mod_wsgi.so'并将其提供给'ldd'。它似乎编译为2.6。 – 2011-03-24 14:23:58