[英]Encountering InsecurePlatformWarning while installing South for Python on Terminal
python的新手,我試圖在終端上向南安裝,但是我一直收到此錯誤:
error: could not create '/Library/Python/2.7/site-packages/south': Permission denied
其次是:
Command "/usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/0h/l9sjp7_50kj0581vz9xtwm5w0000gp/T/pip-build-iJUmlt/south/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/0h/l9sjp7_50kj0581vz9xtwm5w0000gp/T/pip-Z8bOI8-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/0h/l9sjp7_50kj0581vz9xtwm5w0000gp/T/pip-build-iJUmlt/south
這是安全問題嗎? 當我一直在網上尋找答案時,我嘗試使用以下方法安裝“一些隱藏的安全功能”:
pip install requests[security]
還是這是因為我使用的是python版本?
經過多次嘗試,我仍然遇到相同的錯誤。 有人可以回答我正在處理的這個麻煩嗎? 任何幫助將不勝感激!!
您的urllib3已過期。 更新。
InsecurePlatformWarning
是由於您的Python和urllib3
版本urllib3
。
如果您不關心安全性,請禁用警告:
export PYTHONWARNINGS="ignore:A true SSLContext object is not available"
您的Permission denied
錯誤看起來像是文件權限問題。 您正在運行pip
或setuptools
的用戶沒有訪問權限: /Library/Python/2.7/site-packages/south
。 看來您在Mac上,因此您應該:
--user
標志( 推薦 ) pip install --user foo-package
/Users/your-username-here/Library/Python/2.7/lib/python/site-packages/
sudo
以root身份安裝: sudo pip install foo-package
/Library/Python/2.7/site-packages
所有權更改為用戶( 不推薦 ): sudo chown -R your-username-here:wheel /Library/Python/2.7/site-packages
在具有舊版本Python的平台上會發出此警告,其中urllib3
& requests
無法控制或不支持某些確保與服務器安全連接所需的SSL選項。
您可能會遇到以下問題: Python <= 2.7.9
, urllib3 >= 1.11
urllib3
文檔說明了如下錯誤消息:
1.11版中的新功能。
某些Python平台(特別是2.7.9之前的Python版本)在其ssl模塊中具有限制,這些限制限制了urllib3可以應用的配置。 特別是,這可能會導致在功能更強大的平台上成功的HTTPS請求失敗,並可能導致某些安全功能不可用。
如果遇到此警告,強烈建議您升級到新的Python版本,或者按照OpenSSL / PyOpenSSL部分中的說明使用pyOpenSSL。
有關禁用警告的信息,請參閱禁用警告。
從歷史上看,urllib3從未真正安全過。 urllib3文檔中的第一個標題指出 :
非常重要的事實:默認情況下,urllib3不驗證HTTPS請求。
造成這種情況的歷史原因是,我們依賴於httplib來實現某些HTTP協議,而httplib並不能立即驗證請求。 這不是一個好理由,但是我們來了。
幸運的是,啟用已驗證的HTTPS請求並不是很困難,有幾種方法可以做到這一點。
如果只需要使警告靜音,則有幾種方法。 最簡單的方法是在運行python代碼之前先設置PYTHONWARNINGS
環境變量,如下所示:
export PYTHONWARNINGS="ignore:A true SSLContext object is not available"
這應該在Python 2.7+中有效,並且您也可以在Python解釋器中使用-W
標志。
您也可以在代碼中或通過logging
模塊禁用警告 :
# To disable all urllib3 warnings
import urllib3
urllib3.disable_warnings()
# To capture warnings to your own log with the logging module
logging.captureWarnings(True)
如果需要在Python 2.6或Python 2.7.0-2.7.8上使用SNI,則必須分別安裝PyOpenSSL,ndghttpsclient和pyasn1。 此外,要使用certifi,您必須單獨安裝。 如果您知道在安裝urllib3時需要這些依賴關系,則可以執行以下操作:
pip install urllib3[secure]
注意如果在Linux(例如Ubuntu 14.04)上執行此操作,則PyOpenSSL需要額外的系統依賴性。 具體來說,PyOpenSSL需要加密,這需要您安裝:
build-essential
python-dev
libffi-dev
libssl-dev
軟件包名稱可能會有所不同,具體取決於您所使用的Linux的發行版。
GitHub用戶dstufft更詳細地解釋了為什么舊版本的Python無法確保安全連接:
除非您擁有Python 2.7.9+或Python 3.2+,否則urllib3(通過請求)無法控制其某些SSL選項,以確保與服務器的安全連接。 尤其是:
- 在Python 2.6上,它根本無法設置密碼,因此它依賴於平台默認值。
- 它無法禁用TLS壓縮。
- 它不能禁用SSLv3,而不必顯式固定到TLSv1.0。
- 它不能(以及足夠新的OpenSSL支持它)告訴OpenSSL首選較短但仍然有效的證書鏈,這使得很難從信任根中刪除弱的1024位密鑰而不會破壞很多其他方面有效的TLS連接。
- 它不支持SNI,后者會強制pip兼容存儲庫僅使用TLS來刻錄整個IP地址,而與安全性不嚴格相關的則可能是使用已驗證TLS的人與未驗證TLS的人之間的區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.