簡體   English   中英

MAMP Python-MySQLdb問題:一旦調用Python文件,libssl.1.0.0.dylib的路徑就會改變

[英]MAMP Python-MySQLdb issue: Path to libssl.1.0.0.dylib changing once Python file called

我正在嘗試使用python MySQLdb訪問我的MAMP服務器上的MySQL數據庫。

當我最初嘗試使用python-sql調用Python文件來訪問我在MAMP上的數據庫時,我得到了關於libssl.1.0.0.dylib庫的image not found錯誤

 Traceback (most recent call last):
  File "desktopsql.py", line 3, in <module>
    import _mysql as ms
  File "build/bdist.macosx-10.5-x86_64/egg/_mysql.py", line 7, in <module>
  File "build/bdist.macosx-10.5-x86_64/egg/_mysql.py", line 6, in __bootstrap__

  ImportError: 
   dlopen(/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-
  10.5-x86_64.egg-tmp/_mysql.so, 2): 

  Library not loaded: libssl.1.0.0.dylib

  Referenced from: 
   /Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so

  Reason: image not found

所以我通過使用export DYLD_LIBRARY_PATH=/Users/username/anaconda/lib/:$DYLD_LIBRARY_PATH更改libssl.1.0.0.dylib路徑在某種程度上修復了它,但必須對我希望執行的每個文件夾執行此操作。 Python文件。

因此,當我嘗試在我的MAMP網頁上通過PHP執行Python文件時,我再次收到錯誤,這次我無法使用我的臨時修復來掩蓋它。

我嘗試使用install_name_tool進一步修復它,將false庫位置/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so為where它實際上存儲在/Users/username/anaconda/lib/

sudo install_name_tool -change 
libssl.1.0.0.dylib 
/Users/username/anaconda/lib/libssl.1.0.0.dylib 
/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so

在這樣做之后,我使用otool -L來查看我已經更改的狀態,結果表明文件路徑確實已經更改為正確的位置。

otool -L 
/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so

    /Users/username/anaconda/lib/libssl.1.0.0.dylib 
    (compatibility version 1.0.0, current version 1.0.0)

但是,當我再次運行python文件時,我得到image not found錯誤。 再次運行otool -L后,結果顯示文件路徑已再次恢復。

/Users/username/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so:

    libssl.1.0.0.dylib 
    (compatibility version 1.0.0, current version 1.0.0)

因此它會更改到正確的位置,直到我運行python文件並再次返回到之前的狀態。

為什么會這樣? 有什么我可以做的,以保持我改變它的東西?

所以我發現我應該使用/usr/liblibssl.1.0.0.dylib文件,而不是錯誤提到的文件,即Users/$USERNAME/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so在我的例子中, Users/$USERNAME/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.5-x86_64.egg-tmp/_mysql.so

我創建了一個符號鏈接到應該引用libssl.1.0.0.dylib地方( /Users/$USERNAME/anaconda/lib/ for me),使用

sudo ln -s /Users/$USERNAME/anaconda/lib/libssl.1.0.0.dylib /usr/lib/libssl.1.0.0.dylib

並且,一旦完成,對於libcrypto.1.0.0.dylib ,因為它拋出了相同的錯誤。

sudo ln -s /Users/$USERNAME/anaconda/lib/libcrypto.1.0.0.dylib /usr/lib/libcrypto.1.0.0.dylib

在列出/usr/bin的文件時,請注意這兩個列為libss.dyliblibcrypto.dylib

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM