2015-06-28 59 views
4

我正在使用Jenkins構建一個用於部署到Google App Engine的python(Flask)解決方案。作爲構建過程的一部分,我運行了一些集成測試。ImportError:PyCapsule_Import無法導入模塊「pyexpat」

其中一個失敗,出現以下錯誤。

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" 

我已登錄到虛擬機,並尋找這個模塊,這就是我得到

[email protected]:~$ 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'] 
>>> 
+0

你有沒有找到解決這個問題的方法? – Adam

+0

不是。我必須刪除依賴於模塊的測試。 –

回答

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的值複製到它。

希望我幫了忙。

+0

它在路徑中。我已經修改了這個問題。 –

6

我發現了一個解決方法,此問題:

在你詹金斯的腳本,剛開始時只是明確LD_LIBRARY_PATH變量:

出口LD_LIBRARY_PATH =「」

該做的伎倆!我在Ubuntu 16.04安裝朱古力用gcc後

0

得到這個錯誤5.4

這個工作對我來說:

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