我一直坚持在Apache / mod_wsgi / Django部署的服务器上找不到MySQL库的情况,尽pipePython本身可以正确导入库。
这是我的Apache日志错误:
[Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] File "/remote/projects1/pdrtke/python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/utils/importlib.py", line 35, in import_module [Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] __import__(name) [Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] File "/remote/projects1/pdrtke/python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/db/backends/mysql/base.py", line 14, in <module> [Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) [Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory
我已经尝试了以下内容:
import MySQLdb : 好的 python manage.py ...需要数据库支持的操作: Ok LD_LIBRARY_PATH指向libmysqlclient_r.so.16可用的目录: 确定 gdb连接httpd进程,并执行show env : LD_LIBRARY_PATH指向libmysqlclient_r.so.16 envvars文件以添加一个export LD_LIBRARY_PATH=... (以防万一): Ok ldd libmysqlclient_r.so.16检查库本身是否包含未parsing的依赖关系 httpd可执行文件是否没有设置setuid位; 这是一个logging的理由忽略LD_LIBRARY_PATH : 好的 这些行为似乎都不能解决我的问题。 有没有一件明显的事情我忘了考虑?
现在已经修好了 这是我的一个愚蠢的错误。
我最初有一个LD_LIBRARY_PATH没有良好的目录,所以修复它,但是…更改LD_LIBRARY_PATH ,我发出了apachectl restart ,Apachelogging,只杀死subprocess,并从现有的父母派生新的孩子。
所以新的孩子不断拥有旧版本的LD_LIBRARY_PATH 。
现在我不太清楚为什么我用gdb的show environment看到了“好”的LD_LIBRARY_PATH。 但这是一个不同的故事。 我将结束我最初的问题,现在已经解决了。