1

我有一个导入 xml.parsers.expat 的简单脚本,如果它由命令行执行,它就可以正常工作。但是,如果我使用 subprocess.call(python import-expat.py, shell=True) 调用它,它就不起作用。

脚本是:

#! /usr/bin/env python
import xml.parsers.expat

这是错误:

  File "/opt/u_script_files/import-expat.py", line 2, in <module> import xml.parsers.expat
  File "/usr/lib/python2.7/xml/parsers/expat.py", line 4, in <module> from pyexpat import *
ImportError: /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so: undefined symbol: XML_SetHashSalt

我通过以下方式验证依赖关系:

$ ldd /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so 
linux-vdso.so.1 =>  (0x00007ffd9b392000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1608877000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f16084b2000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f1608288000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1608ca6000)

并搜索文件“libexpat.so.1”

$ apt-file search libexpat.so.1
libexpat1: /lib/x86_64-linux-gnu/libexpat.so.1
libexpat1: /lib/x86_64-linux-gnu/libexpat.so.1.6.0

我不明白为什么它只能通过命令行工作,如果我使用 subprocess.call 调用脚本(import-expat.py),它就不起作用。我重命名了文件“libexpat.so.1”,如此处所述,但它对我不起作用。一些想法?

4

0 回答 0