我有一个客户正在运行一个Server 11,我想在该服务器上使用一个django-项目和OpenOffice,名为PyUNO。它使用apache2运行mod_wsgi,并且没有虚拟主机或其他什么东西。
我向PYTHONPATH添加了相关的路径,但是当我运行一个shell python manage.py shell并尝试import uno时,我得到了以下错误:
dynamic module not initialized properly它是OpenOffice 3.4,python2.6.x(都来自SUSE)。
谷歌带领我找到了一个系统变量LD_LIBRARY_PATH,但是一旦我设置了它,我就不能再启动shell了,因为python再也找不到django了(PYTHONPATH似乎被破坏了)。如果我运行ldconfig -v /path/to/openoffice/program/,这是另一个常见的建议,结果是一样的。
完成上述操作后,我可以运行系统范围的python并导入uno。但是我不能再运行django-shell了,因为找不到django。
如果我重置LD_LIBRARY_PATH (通过unset LD_LIBRARY_PATH或ldconfig),就会遇到“旧”的情况。
OpenOffice附带了一个python二进制文件。这一个可以导入uno而没有错误。
结果:我考虑使用另一个uno.py,或者以某种方式告诉apache2使用openoffice附带的python。我如何才能这样做,或者将相关的pyuno依赖项添加到apache使用的python版本中?或者哪个版本的openoffice/pyuno可以解决我的问题?我想避免接触mod_wsgi和python的SUSE-来源。
此外,一些关于LD_LIBRARY_PATH的提示可能会有所帮助。
发布于 2013-06-25 10:49:28
LD_LIBRARY_PATH是一个覆盖共享库搜索路径的变量(通常是.so)。
例如,当您设置它时,导出LD_LIBRARY_PATH=/opt/test/mylibs时,所有应用程序都会在该位置搜索共享库。
这就解释了为什么django-shell不能运行,因为它在搜索不存在的库。
好消息是,可以将LD_LIBRARY_PATH设置为几条路径,用冒号(:)分隔。这样,您就可以导出LD_LIBRARY_PATH=/opt/test/mylibs:/opt/another/path
如果您设法找到您需要的所有库所在的位置,您可以将它们的路径附加到LD_LIBRARY_PATH中,这可能足以解决您的问题。
我不知道,但是这是否是你所面临的真正问题,但我认为这可能会给你一些关于这个变量的意义的一些后知后觉。
https://stackoverflow.com/questions/17233724
复制相似问题