在终端上安装South for Python时遇到不安全的PlatformWarning

在终端上安装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

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_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