簡體   English   中英

如何在MAC OS中鏈接python 2.7和最新的openssl版本?

[英]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.

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