2016-08-24 100 views
1

所以我正在與errbot合作,並用python3.5啓動了virtualenv。當我運行errbot命令我得到這個錯誤Python 3.5 OpenSSL錯誤

from OpenSSL import crypto 
    File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/OpenSSL/__init__.py", line 8, in <module> 
    from OpenSSL import rand, crypto, SSL 
    File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/OpenSSL/rand.py", line 12, in <module> 
    from OpenSSL._util import (
    File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/OpenSSL/_util.py", line 6, in <module> 
    from cryptography.hazmat.bindings.openssl.binding import Binding 
    File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 250, in <module> 
    _verify_openssl_version(Binding.lib.SSLeay()) 
    File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 230, in _verify_openssl_version 
    "You are linking against OpenSSL 0.9.8, which is no longer " 

這是「問到死」的話題就那麼那麼很明顯,我是阿貝爾得到儘快解決。我跟着這個answer。但是當我運行brew link --force openssl我得到這個:

Warning: Refusing to link: openssl 
Linking keg-only openssl means you may end up linking against the insecure, 
deprecated system OpenSSL while using the headers from Homebrew's openssl. 
Instead, pass the full include/library paths to your compiler e.g.: 
    -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib 

對於這點我嘗試:

export CPPFLAGS='-I/usr/local/opt/openssl/include' 
export LDFLAGS='-L/usr/local/opt/openssl/lib' 

這個我很失落後,不知道該怎麼辦。當我嘗試:python -c "import ssl; print (ssl.OPENSSL_VERSION)"我仍然得到OpenSSL 0.9.8zg 14 July 2015我在OSX上

+0

兩件很快速的事情:1)你嘗試在連接之前強制brew更新openssl嗎? 'brew install openssl'然後'brew鏈接openssl --force' 2)你在路徑中檢查了多個openssl實例嗎? –

+0

是的,我沒有更新openssl到'openssl-1.0.2h_1'。當我在我的virtualenv中執行'$ echo $ PYTHONPATH'時,它會返回一個空字符串 – newkid101

+0

我需要一些關於您的路徑的更多信息。試試這個:輸入'which openssl',然後看看'/ usr/bin'和'/ usr/local/bin'中是否有openssl。我猜想/希望你會在兩者中找到一個。 –

回答

1

升級你的點子。 pip 8.1+將會下載一個二進制輪子,預先編譯加密。如果您想自己編譯,則可以在installation頁面的文檔中找到正確的自制程序環境變量。