【发布时间】:2013-06-21 11:06:21
【问题描述】:
我有一个运行 SUSE Enterprise Server 11 的客户,我想在其上使用一个名为 PyUNO 的带有 OpenOffice-Python-Bridge 的 django 项目。它运行带有mod_wsgi 的apache2,并且没有virtualenv 之类的。
我将相关路径添加到 PYTHONPATH,但是当我运行 shell python manage.py shell 并尝试 import uno 时,我收到此错误:
dynamic module not initialized properly
它是 OpenOffice 3.4、python 2.6.x(均来自 SUSE-DVD)。
Google 将我带到了一个系统变量 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 可以解决我的问题?我想避免接触 SUSE 源中的 mod_wsgi 和 python。
还有一些关于 LD_LIBRARY_PATH 的提示可能会有所帮助。
【问题讨论】:
-
设置
LD_LIBRARY_PATH而不是LD_CONFIG_PATH是否有效? -
啊,对不起。那是我已经使用的变量。我将编辑问题。
-
好吧,如果你可以在
LD_LIBRARY_PATH未设置时导入django 模块,那么简单地设置LD_LIBRARY_PATH不会导致它失败,也不会影响PYTHONPATH。运行 django shell 时收到的确切错误消息是什么? -
它不再找到 django,如果我还添加了 django-path,它会在“import os”处失败。因此,自定义此路径不是有用的方法。也不确定导入 uno 之后是否会起作用......
标签: python linux django openoffice.org pyuno