2012-08-31 139 views
1

我使用sudo easy_install python-jenkins在mac上安裝了jenkins軟件包。安裝進行得很好,沒有錯誤,但是當我打開python並鍵入import jenkins時,出現以下錯誤。在python中導入jenkins失敗mac上

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "build/bdist.macosx-10.7-intel/egg/jenkins.py", line 9, in <module> 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 431, in LoadLibrary 
    return self._dlltype(name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 353, in __init__ 
    self._handle = _dlopen(self._name, mode) 
OSError: dlopen(/Library/Python/2.7/site-packages/lookup3.so, 6): image not found 

使用谷歌搜索這沒有產生任何有用的結果。

回溯編輯

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "jenkins.py", line 9, in <module> 
    lookup3 = cdll.LoadLibrary(os.path.join(get_python_lib(), "lookup3.dynlib")) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 431, in LoadLibrary 
    return self._dlltype(name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 353, in __init__ 
    self._handle = _dlopen(self._name, mode) 
OSError: dlopen(/Library/Python/2.7/site-packages/lookup3.dynlib, 6): image not found 

回答

2

後有問題的模塊與Mac OS X動態庫公約的規定。

它試圖加載lookup3.so文件,但是在Mac上它將代替爲lookup3.dynlib。您可以通過查看/Library/Python/2.7/site-packages目錄來驗證此情況。然後只需編輯jenkins.py模塊並用.dynlib替換.so擴展。

我也會把這個報告給issue tracker of the module;一個簡單的if platform.system() == 'Darwin':交換機可以保持跨平臺的可加載性。

更新:實際上,模塊固執地期望lookup3.so模塊位於site-packages目錄而不是模塊本身。因此它不兼容easy_install。當您將.egg目錄中的所有文件(未更改)直接移動到/Library/Python/2.7/site-packages/目錄時,它將起作用。

+0

在上述目錄中我似乎無法找到'jenkins.py',這裏有兩個文件'jenkins-1.0.2-py2.7-macosx-10.7-intel.egg python_jenkins-0.2-py2.7 .egg' – cyberbemon

+0

@cyberbemon:對,雞蛋已經被安裝爲zip文件;或者用'easy_install -ZU jenkins'重新安裝它們,或者手動解壓縮'.egg'文件,用重命名爲相同名稱的替換文件替換該文件(所以jenkins-1.0.2-py2.7的內容-macosx-10.7-intel.egg'成爲一個具有完全相同名稱的新目錄)。 –

+0

'easy_install -ZU jenkins'這沒有結果,所以我嘗試'gzip python_jenkins-0.2-py2.7.egg',現在我有一個名爲'python_jenkins-0.2-py2.7.egg.gz'的文件,我想我搞砸了! – cyberbemon