在终端上安装South for Python时遇到不安全的PlatformWarning
python新手,我正在尝试在终端上安装south,但我一直收到以下错误:在终端上安装South for Python时遇到不安全的PlatformWarning,python,installation,django-south,Python,Installation,Django South,python新手,我正在尝试在终端上安装south,但我一直收到以下错误: 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_50kj0581vz9xtwm5w0000g
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已过期。更新。简短回答: 不安全平台警告是由于您的Python和urllib3版本引起的 如果您不关心安全性,只需禁用警告:
export PYTHONWARNINGS="ignore:A true SSLContext object is not available"
您的权限被拒绝错误看起来像是文件权限问题。运行pip或setuptools的用户没有对:/Library/Python/2.7/site-packages/south的写入权限。看起来你在Mac电脑上,所以你应该:
使用-pip的用户标志,推荐EDI.e.:pip安装-user foo PACKAGETH将软件包安装到:/Users/your username here/Library/Python/2.7/lib/Python/site-packages/Note:
使用sudo作为root安装:sudo pip install foo包
将/Library/Python/2.7/site-packages的所有权更改为您的用户不推荐:sudo chown-R您的用户名:wheel/Library/Python/2.7/site-packages
长答覆:
在较早版本Python的平台上会发出此警告,其中urllib3&requests无法控制或不支持确保与服务器安全连接所需的某些SSL选项
受影响的版本
您可能会遇到:Python=1.11
urllib3文档
将按如下方式解释错误消息:
export PYTHONWARNINGS="ignore:A true SSLContext object is not available"
版本1.11中的新功能
某些Python平台—具体来说,早于2.7.9的Python版本在其ssl模块中有限制,限制了urllib3可以应用的配置。特别是,这可能会导致在功能更强大的平台上成功的HTTPS请求失败,并可能导致某些安全功能不可用
如果遇到此警告,强烈建议您升级到较新的Python版本,或者按照OpenSSL/pyOpenSSL部分中的说明使用pyOpenSSL
有关禁用警告的信息,请参见禁用警告
历史上,urllib3从未真正安全过。委员会:
非常重要的事实:默认情况下,urllib3不会验证HTTPS请求
这种情况的历史原因是,我们依赖于httplib来实现一些HTTP协议,而httplib不会立即验证请求。这不是一个很好的理由,但我们到了
幸运的是,启用经过验证的HTTPS请求并不太难,有几种方法可以做到这一点
权变措施
禁用警告
如果你只需要让警告静音,有几种方法。最简单的方法是在运行python代码之前设置PYTHONWARNINGS环境变量,如下所示:
export PYTHONWARNINGS="ignore:A true SSLContext object is not available"
这应该在Python2.7+中工作,您也可以为Python解释器使用-W标志
您还可以在代码中,或使用日志模块:
在旧版Python上安装SNI支持
委员会:
如果需要在Python2.6或Python2.7.0-2.7.8上使用SNI,则必须分别安装PyOpenSSL、ndghttpsclient和pyasn1。此外,要使用certifi,您必须单独安装它。如果您知道在安装urllib3时需要这些依赖项,现在可以执行以下操作:
注意:如果您在linux上这样做,例如Ubuntu 14.04,您将需要额外的PyOpenSSL系统依赖项。具体而言,PyOpenSSL需要加密,这将要求您安装:
软件包名称可能因您使用的linux发行版而异
更详细的技术信息
更详细地解释了为什么旧版本的Python无法确保安全连接:
除非您有Python2.7.9+或Python3.2+urllib3 via请求,否则无法控制某些SSL选项,以确保与服务器的安全连接。特别是:
在Python2.6上,它根本无法设置密码,因此依赖于平台默认值。
它无法禁用TLS压缩。
它无法禁用SSLv3,而不必显式地固定到TLSv1.0。
它不能与新到足以支持它的OpenSSL一起告诉OpenSSL更喜欢一个较短但仍然有效的证书链,这使得在不中断许多其他有效TLS连接的情况下,很难从信任根中删除弱的1024位密钥。
它不支持SNI,SNI强制pip兼容的存储库使用整个IP地址来使用TLS,而与安全性没有严格的关系。这可能是使用已验证TLS和未验证TLS的人之间的区别。
pip install urllib3[secure]
build-essential
python-dev
libffi-dev
libssl-dev