1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
Python 打包很“有趣”。讓我們?nèi)ッ半U(xiǎn)吧!
pip
vendors?urllib3
,如果 Python < 2.7.9 上存在pyOpenSSL,它會(huì)自動(dòng)使用 pyOpenSSL 。這樣做是因?yàn)?Python < 2.7.9 不支持TLS 中的SNI ;一個(gè)重要的現(xiàn)代特征。pyOpenSSL
,反過來又依賴于cryptography
,它在 2.9 版本中放棄了 1.0.1 支持。因此,當(dāng)您嘗試在其中執(zhí)行任何操作時(shí),pip
都會(huì)觸發(fā)導(dǎo)致此錯(cuò)誤的導(dǎo)入序列。
您在另一臺(tái)幾乎相同的服務(wù)器上沒有看到此問題的(可能)原因是該服務(wù)器cryptography
還附帶靜態(tài)鏈接較新 OpenSSL 的二進(jìn)制輪。如果您使用的是 pip 8.x 或更高版本(您可能位于正常工作的服務(wù)器上,并且可能不在損壞的服務(wù)器上),它將獲取與 OpenSSL 1.1.1-latest 鏈接的輪子(前提是您使用的是x86_64。i686 輪子在 2.7 中被刪除)。
鑒于您看到的錯(cuò)誤消息,幾乎可以肯定您正在損壞的服務(wù)器上運(yùn)行加密 2.9.x。該版本支持環(huán)境變量解決方法。所以如果你CRYPTOGRAPHY_ALLOW_OPENSSL_101=1 pip list
這樣做的話應(yīng)該會(huì)起作用。
如果有效,那么您應(yīng)該立即升級(jí)cryptography
。由于您現(xiàn)在在此服務(wù)器上運(yùn)行 pip 20.x,因此該命令CRYPTOGRAPHY_ALLOW_OPENSSL_101=1 pip install -U cryptography
應(yīng)從輪子安裝版本 3.1(假設(shè)您在 x86_64 上運(yùn)行)。
如果您不是在 x86_64 上運(yùn)行,那么您有兩個(gè)選擇(不涉及升級(jí)您的發(fā)行版,您應(yīng)該這樣做,因?yàn)?wheezy 早已不再支持!):
總是通過
CRYPTOGRAPHY_ALLOW_OPENSSL_101
并且不再升級(jí)cryptography
(2.9.2是最后一個(gè)甚至秘密支持1.0.1的版本)降級(jí)
cryptography
到2.8,也不再升級(jí)。
添加回答
舉報(bào)