Python导入错误没有sudo权限的Centos上没有名为_ssl的模块

时间:2019-02-12 13:05:23

标签: python linux centos

我想在Centos共享计算机上安装Plotly,所以我没有Sudo访问权限。这台计算机上的所有软件包都已过时,因此我需要通过编译源代码来为本地用户安装python3,我做到了。问题是pip命令不起作用,它给了我这个错误:

  

无法获取URL“某些URL”:确认ssl证书时出现问题:HTTPSConnectionPool(host ='pypi.org',port = 443):URL超过了最大重试次数:/ simple / pip /(由SSLError(“由于SSL模块不可用,无法连接到HTTPS URL。”))-跳过

我成功使用whl文件安装了软件包,但是当我再次尝试导入Plotly时,却出现了此错误:

import _ssl             # if we can't import it, let the error propagate
     

ModuleNotFoundError:没有名为“ _ssl”的模块

我尝试使用不同的配置再次重新编译python。在尝试构建python时,我尝试了将--with-ssl放在./configure命令中的建议,但出现未知的参数警告。 再次尝试取消注释Modules / Setup文件中的波纹管,但是在编译步骤中出现以下错误。

ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
  

./ Modules / _ssl.c:3112:错误:函数'X509_VERIFY_PARAM_set_hostflags'的隐式声明

     

./ Modules / _ssl.c:在函数“ get_verify_flags”中:

     

./ Modules / _ssl.c:3410:警告:赋值使指针从整数开始而没有强制转换

     

./ Modules / _ssl.c:在函数“ set_verify_flags”中:

     

./ Modules / _ssl.c:3423:警告:赋值使指针从整数开始而没有强制转换

     

./ Modules / _ssl.c:在函数“ set_host_flags”中:

     

./ Modules / _ssl.c:3586:警告:赋值使指针从整数开始而没有强制转换

     

make [3]:*** [Modules / _ssl.o]错误1

此外,在配置步骤中,我获得了有关ssl的以下几行

  

检查针对OpenSSL的编译和链接是否有效...是

     

正在检查libssl中的X509_VERIFY_PARAM_set1_host ...否

     

检查--with-ssl-default-suites ... python

有人可以帮助我找到一种在没有sudo访问权限的情况下在CentOS计算机上安装Plotly的解决方案吗? 感谢您的帮助。

1 个答案:

答案 0 :(得分:11)

您可以按以下方式在没有root特权的情况下安装Plotly:

  

在大多数情况下,最好的方法是通过运行以下命令来依赖“用户站点”位置(有关更多详细信息,请参见PEP enter link description here):

pip install --user package_name

或:

easy_install --prefix=$HOME/local package_name

此外,如果您想为PIP指定一个您有权使用的文件夹:

pip install --install-option="--prefix=$HOME/local" package_name

当然,您需要将该位置添加到PYTHONPATH环境变量中。

关于使用SSL和非标准位置构建Python,如果OpenSSL不在标准位置,则需要编辑Modules/Setup.dist来指定OpenSSL的位置:

如果/usr/local/ssl目录不存在,请下载OpenSSL module

tar zxf openssl-0.9.8g.tar.gz
cd openssl-0.9.8g
./config
make
make install

然后下载python源代码:

tar zxf Python-{version}.tgz && cd Python-{version}

现在修改Modules/Setup.dist

204:# Socket module helper for SSL support; you must comment out the other
205:# socket line above, and possibly edit the SSL variable:
206:SSL=/usr/local/ssl
207:_ssl _ssl.c \
208:    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
209:    -L$(SSL)/lib -lssl -lcrypto</pre>

如果您已将OpenSSL安装在默认位置,则只需取消注释行206-209,即可:

./configure
make
make install

然后您可以使用:

检查安装

python /usr/local/lib/python{version}/test/test_socket_ssl.py

为确保对Modules/Setup.dist所做的更改得到确认,请确保清除源根目录(例如make distclean)并运行configure and make again。