[英]How to link python 2.7 with latest openssl version in MAC OS?
當我跑:
$ openssl version -a
我得到1.0.2k版本:
OpenSSL 1.0.2k 26 Jan 2017
built on: reproducible build, date unspecified
platform: darwin64-x86_64-cc
options: bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: cc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/php5/ssl"
但是當我用python檢查版本時:
$ python -c 'import ssl; print(ssl.OPENSSL_VERSION)'
我得到: OpenSSL 0.9.8zg 14 July 2015
如何鏈接最新的openssl版本? 我的點子版本是;
pip 10.0.1 from /Library/Python/2.7/site-packages/pip (python 2.7)
當我嘗試使用PIP安裝某些模塊時,我得到[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)
錯誤。 所以試圖在python中升級我的ssl版本
如何使我的系統Openssl版本與virtualenv版本相同?
你真的不想搗亂系統Python。 它的構建是為了在需要時與您的操作系統協同工作。
如果您需要使用Python進行更新的OpenSSL構建,請使用brew或macports或python.org軟件包來安裝更新的Python 2或3版本並使用它們。
(作為參考,我的brew Python 3.6 Python是針對OpenSSL 1.0.2o
,作為示例)
如何鏈接最新的openssl版本?
這只有在從源代碼編譯Python時才有可能; OpenSSL的頭文件和庫的位置來編譯與針對通過設定/鏈路CPPFLAGS
/ LDFLAGS
/ LD_LIBRARY_PATH
環境變量,如所描述這里 。 但是,一旦編譯完成代碼,就無法“重新鏈接”代碼。
另一個問題是,如果沒有一些危險的系統修改,您將無法在MacOS中更改系統Python。 MacOS預裝的Python位於/System/Library/Frameworks/Python.framework
下,你不能在不關閉系統完整性保護的情況下修改或刪除/System
下的任何內容(我強烈建議不要這樣做)。
因此,建議的解決方案是將系統Python保持原樣並安裝另一個副本供自己使用。 在MacOS上,您通常有兩種選擇:使用提供最新Python 2和3版本的Homebrew,或使用https://www.python.org/downloads/上的官方.pkg
安裝程序。 兩者都是針對最新版本的OpenSSL構建的。 選擇什么取決於您的使用案例; 個人而言,我不使用釀造的Python,因為它不提供多個版本的Python 3包(例如,我需要同時安裝3.5 / 3.6 / 3.7來運行測試)。 .pkg
安裝程序的主要缺點是已安裝的Python安裝在任何軟件包管理器之外,不會自動更新,因此您有責任自行更新。 最糟糕的情況是,這意味着下載新的安裝程序並重新安裝即使是次要的版本。
安裝完成后,為您的用戶調整PATH
變量,以便新安裝的Python位於系統之前。 對於釀造的Python,打開~/.bash_profile
並追加
BREW_PREFIX=$(brew --prefix)
PATH="$BREW_PREFIX/bin:$BREW_PREFIX/sbin:$PATH"
export PATH
對於通過官方.pkg
安裝程序安裝的Python:應在安裝中自動修改配置文件; 盡管如此,仔細檢查並沒有什么壞處。 打開~/.bash_profile
並檢查線條是否相似
# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH
存在; 如果沒有,請將它們附加到已安裝的Python版本中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.