为什么会出这个呢,因为当前工作碰到了,顺道记录一下解决方案
问题情况
- 没有root权限
- 自带的python或者已经装好的python或者conda 都不能装包或者下载东西,一直提示443异常
单独运行python代码会提示以下内容
1 2
| import _ssl ModuleNotFoundError: No module named '_ssl'
|
问题剖析
- openssl版本过低
- python编译的时候没有链接到openssl
大概解决思路
- 要么安装比较低版本的python
- 要么重新编译python
解决
我这里选择重新编译,因为没有root权限,所以下面的操作都在用户目录下~
1. 下载openssl
我这里选择python3.10版本,所以我这里的openssl至少得要1.1.1版本,其他的版本自行搜索处理
1 2 3 4 5 6 7 8 9 10 11 12 13
| wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar xzf openssl-1.1.1w.tar.gz cd openssl-1.1.1w
./config --prefix=$HOME/.local/openssl --openssldir=$HOME/.local/openssl make -j$(nproc) && make install
echo 'export PATH="$HOME/.local/openssl/bin:$PATH"' >> ~/.bashrc echo 'export LD_LIBRARY_PATH="$HOME/.local/openssl/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc source ~/.bashrc
|
操作完了之后,输入
2. 下载python
直接去官网下载你的python xz或者tar的都可以,先解压好
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| cd Python-3.10.X make clean
export LDFLAGS="-L$HOME/.local/openssl/lib" export CPPFLAGS="-I$HOME/.local/openssl/include" export LD_LIBRARY_PATH="$HOME/.local/openssl/lib:$LD_LIBRARY_PATH"
./configure \ --prefix=$HOME/.local/python-3.10 \ --with-openssl=$HOME/.local/openssl \ --enable-optimizations \ --disable-ipv6
make -j$(nproc) && make install
|
3. 验证
1
| $HOME/.local/python-3.10/bin/python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
|
只要上面没有报错就可以了