easy_install PyOpenSSL错误

时间:2011-09-07 21:35:20

标签: openssl pyopenssl

有关导致错误的原因有什么想法吗?

我使用Linux centos和openssl-devel.i386 0.9.8e-12.el5_5.7

$ easy_install PyOpenSSL
Searching for PyOpenSSL
Reading http://pypi.python.org/simple/PyOpenSSL/
Reading http://launchpad.net/pyopenssl
Reading http://pyopenssl.sourceforge.net/
Best match: pyOpenSSL 0.13
Downloading http://pypi.python.org/packages/source/p/pyOpenSSL/pyOpenSSL-0.13.tar.gz#md5=767bca18a71178ca353dff9e10941929
Processing pyOpenSSL-0.13.tar.gz
Running pyOpenSSL-0.13/setup.py -q bdist_egg --dist-dir /tmp/easy_install-0Dunib/pyOpenSSL-0.13/egg-dist-tmp-aV6OCC
warning: no previously-included files matching '*.pyc' found anywhere in distribution
OpenSSL/ssl/connection.c: In function ‘ssl_Connection_set_context’:
OpenSSL/ssl/connection.c:289: warning: implicit declaration of function ‘SSL_set_SSL_CTX’
OpenSSL/ssl/connection.c: In function ‘ssl_Connection_get_servername’:
OpenSSL/ssl/connection.c:313: error: ‘TLSEXT_NAMETYPE_host_name’ undeclared (first use in this function)
OpenSSL/ssl/connection.c:313: error: (Each undeclared identifier is reported only once
OpenSSL/ssl/connection.c:313: error: for each function it appears in.)
OpenSSL/ssl/connection.c:320: warning: implicit declaration of function ‘SSL_get_servername’
OpenSSL/ssl/connection.c:320: warning: assignment makes pointer from integer without a cast
OpenSSL/ssl/connection.c: In function ‘ssl_Connection_set_tlsext_host_name’:
OpenSSL/ssl/connection.c:346: warning: implicit declaration of function ‘SSL_set_tlsext_host_name’
error: Setup script exited with error: command 'gcc' failed with exit status 1

9 个答案:

答案 0 :(得分:27)

要在virtualenv下安装它,首先应安装所需的软件包。在ubuntu上:

sudo apt-get install python-dev libffi-dev libssl-dev

然后你可以输入:

pip install pyopenssl

答案 1 :(得分:25)

pyOpenSSL 0.13引入了对(S)erver(N)ame(I)ndication TLS扩展的支持。此扩展允许客户端告诉服务器他们希望与之通信的主机名,允许服务器选择合适的证书来呈现。

OpenSSL 0.9.8f中引入了对SNI的支持。因此,pyOpenSSL 0.13将使用OpenSSL 0.9.8f或更高版本构建,但不会构建OpenSSL 0.9.8e或更早版本,其中不希望包含它所包含的API。

也许较新版本的pyOpenSSL会使这些绑定成为可选,恢复对OpenSSL 0.9.8e及更早版本的支持。但是,类似地,较新版本的OpenSSL也可以与pyOpenSSL 0.13一起使用。

pyOpenSSL项目发布预发布版。预发布的广泛测试可以帮助避免像这样的情况。我建议任何依赖pyOpenSSL的人订阅(流量非常低)pyOpenSSL user list(或SourceForge),并在发布完成之前,在发布完成之前进行测试。< / p>

答案 2 :(得分:6)

我在尝试安装Scrapy时遇到了这个问题。对我来说,Thanasis的回答没有用。经过多次谷歌和随机安装的东西

yum install python-devel

允许Scrapy安装为我运行(CentOS版本6.3(最终版))

答案 3 :(得分:6)

不完全是什么问题,但在 Ubuntu 12.04 中可以安装:

sudo apt-get install python-openssl

答案 4 :(得分:5)

对我来说,我必须安装openssl-devel libs:

yum install openssl-devel

试图安装旋风/龙卷风/扭曲的python偶像lib。

答案 5 :(得分:2)

如果您不需要使用最新的pyOpenSSL,只需回滚到0.12,这是最简单的方法。

pip install pyOpenSSL==0.12

检查@ Jean-Paul的详细答案。

答案 6 :(得分:1)

尝试安装:

sudo apt-get install -y python-dev libssl-dev libffi-dev

答案 7 :(得分:1)

我无法安装libssl-devel或libssl-dev,但这对我来说在CentOS 6上工作(之前安装了pyOpenSSL 0.13.1):

sudo yum -y remove pyOpenSSL.x86_64
sudo yum -y install libffi-devel
#sudo yum -y install libssl-devel 
sudo yum -y install openssl-devel 
sudo yum -y install python-devel
sudo pip install pyopenssl

答案 8 :(得分:0)

我们遇到了同样的问题。检查一下我们找到了解决它的方法: https://bugs.launchpad.net/pyopenssl/+bug/845445

你正在寻找的是#34;菲利普的修复在CentOS 5.6上为我工作:&#34;: https://bugs.launchpad.net/pyopenssl/+bug/845445/comments/9

这在我们的案例中运作良好。