ImportError:PyCapsule_Import无法导入模块“pyexpat”

时间:2015-06-28 13:07:26

标签: python google-app-engine jenkins

我正在使用Jenkins构建一个python(Flask)解决方案来部署到Google App Engine。作为构建过程的一部分,我运行了一些集成测试。

其中一个失败,出现以下错误。

ERROR: Failure: ImportError (PyCapsule_Import could not import module "pyexpat")
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/nose-1.3.6-py2.7.egg/nose/loader.py", line 420, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/local/lib/python2.7/dist-packages/nose-1.3.6-py2.7.egg/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/local/lib/python2.7/dist-packages/nose-1.3.6-py2.7.egg/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/CFC Melbourne production pipeline/workspace/Tests/test_integration.py", line 4, in <module>
    from main import app
  File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/CFC Melbourne production pipeline/workspace/main.py", line 28, in <module>
    from Routes.AdminRoutes import admin_routes
  File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/CFC Melbourne production pipeline/workspace/Routes/AdminRoutes.py", line 7, in <module>
    from thirdpartylib import cloudstorage
  File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/CFC Melbourne production pipeline/workspace/thirdpartylib/cloudstorage/__init__.py", line 22, in <module>
    from cloudstorage_api import *
  File "/opt/bitnami/apps/jenkins/jenkins_home/jobs/CFC Melbourne production pipeline/workspace/thirdpartylib/cloudstorage/cloudstorage_api.py", line 37, in <module>
    import xml.etree.cElementTree as ET
  File "/usr/lib/python2.7/xml/etree/cElementTree.py", line 3, in <module>
    from _elementtree import *
ImportError: PyCapsule_Import could not import module "pyexpat"

我已登录虚拟机并搜索此模块,这就是我得到的

xxx@jenkins-pre1:~$ sudo find / -name pyexpat*
/usr/lib/python2.7/lib-dynload/pyexpat.so
/var/lib/docker/aufs/diff/d0cfa9780fa540e496fd60e38f32c58708374a4a62bc8a6462834c7757a31cdf/usr/lib/python2.7/lib-dy
nload/pyexpat.x86_64-linux-gnu.so

我猜它的安装但无法导入模块。请帮忙。

模块位于python路径中。

>>> import sys
>>> print sys.path
['', '/usr/local/lib/python2.7/dist-packages/setuptools-15.2-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/no
se-1.3.6-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/pip-7.0.3-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/
python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload'
, '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7']
>>> 

3 个答案:

答案 0 :(得分:6)

我找到了解决此问题的方法:

在你的jenkins脚本中,只需在开头清除LD_LIBRARY_PATH变量:

export LD_LIBRARY_PATH =&#34;&#34;

这就是诀窍!!

答案 1 :(得分:0)

似乎/usr/lib/python2.7/lib-dynload/不在你的Python路径中。 您可以使用以下Python命令进行检查:

import sys
print sys.path

如果没有出现,您可以设置PYTHONPATH环境变量:

$ export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/lib-dynload/

请务必检查PYTHONPATH环境变量是否为空,如果为空,请将sys.path的值分隔为“:”。

希望我帮助过。

答案 2 :(得分:0)

使用gcc 5.4

在UBUNTU 16.04上安装caffe后出现此错误

这对我有用:

pip uninstall scikit-image

sudo apt-get install python-skimage

但是上面的另一台机器也无法解决这个问题:

这有效:

ldd /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so 
    linux-vdso.so.1 =>  (0x00007fffa4570000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3ff57dc000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3ff5416000)
    libexpat.so.1 => /opt/oracle/product/11.2.0/dbhome_1/lib/libexpat.so.1 (0x00007f3ff52e5000)
    /lib64/ld-linux-x86-64.so.2 (0x00005645018a1000)
#and just rename that libexpat.so.1
cd /opt/oracle/product/11.2.0/dbhome_1/lib
sudo mv libexpat.so.1 libexpat.so.1.bak

取自:http://answers.ros.org/question/227788/pycapsule_import-could-not-import-module-pyexpat-when-running-rosdep-update/?answer=229807