python3.6源码编译安装 & 解决SSL报错

从源码编译安装python3.6之后,用pip的时候可能会提示SSL错误,实际上是openssl和python的安装有问题,本文给出安装openssl和python3.6.6的完整过程。 

1、编译安装openssl

首先说明在python3.6编译的时候没有 --with-ssl 这个参数,python3.6.6源码中setup.py中有下面几行:

# Detect SSL support for the socket module (via _ssl)
        search_for_ssl_incs_in = [
                              '/usr/local/ssl/include',
                              '/usr/contrib/ssl/include/'
                             ]
        ssl_incs = find_file('openssl/ssl.h', inc_dirs,
                             search_for_ssl_incs_in
                             )

这说明了编译的时候会在/usr/local/ssl的子路经中寻找ssl的头文件,所以使用参数--prefix将openssl安装在/usr/local/ssl即可。

(1) 首先解压文件,然后进入openssl源码目录,按下面的命令进行编译安装

./config --prefix=/usr/local/ssl
sudo make
sudo make install

(2)添加动态链接库路径

打开文件 /etc/ld.so.conf
在文件末尾添加ssl动态链接库的路径 /usr/local/ssl/lib
sudo ldconfig
ldconfig -p | grep libssl.so.3   # 查看动态链接库是否存在

 2、编译安装python3.6.6

(1) 编译安装

在python源码目录中执行下面的命令

sudo ./configure --prefix=/opt/python3.6.6
sudo make
sudo make install

安装结束后将 /opt/python3.6.6/bin下的python3.6和pip3.6软链到/usr/bin即可。

(2)安装验证

执行 sudo pip3.6 install onnx 测试pip是否正常,如果出现下面的错误,尝试执行下面第(3)步的文件修改,并重新编译安装。

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)':

(3) 解压并进入源码目录

修改文件 Modules/Setup,将下面所示的4行注释去掉(第209到212行)。网上有的文章说还需要修改Setup.dist,实际上我只修改了Setup,目前使用场景下没有出现问题。

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

有任何问题欢迎留言交流。 

<think>嗯,用户想在Python 3.7中安装libact库,但可能遇到了问题。首先,我应该回忆一下安装第三方库的一般方法,比如使用pip。用户可能已经尝试过`pip install libact`,但可能遇到了错误。这时候需要考虑libact是否支持Python 3.7,或者是否需要特定版本的依赖库。 然后,我需要检查libact的官方文档或PyPI页面,看看是否有兼容性说明。比如,有些库可能只支持到Python 3.6,或者需要特定的操作系统依赖。如果用户的环境变量没有正确设置,也可能导致安装失败,比如引用[2]和[4]提到的环境变量问题,尤其是Python 3.7的路径是否正确配置。 另外,用户可能缺少某些系统依赖库,比如开发工具或头文件。这时候需要安装python3-dev这样的包。如果libact需要从源码编译,用户可能需要安装编译器工具链,比如gcc和make,这在Linux系统中比较常见。 还有,虚拟环境的使用也是一个常见的问题。用户是否在虚拟环境中安装?如果没有激活环境,可能会导致安装到全局Python中,而用户可能没有权限,这时候需要加上`--user`选项或者使用sudo。 最后,如果所有方法都失败,可能需要寻找替代库或者从源码安装。用户可能需要查看GitHub仓库的issue部分,看看是否有其他人遇到类似的问题,或者尝试使用conda安装,如果有可用的版本。</think>### 在Python 3.7中安装`libact`库的方法 #### 步骤1:确认Python环境 1. **检查Python版本** 终端输入以下命令验证是否为Python 3.7: ```bash python3 --version ``` 若显示类似`Python 3.7.x`,则符合要求。若需切换版本,可通过`update-alternatives`或虚拟环境配置[^4]。 2. **确保pip已更新** 更新pip以避免兼容性问题: ```bash python3 -m pip install --upgrade pip ``` #### 步骤2:尝试直接安装 通过pip安装`libact`: ```bash python3 -m pip install libact ``` - **常见问题**: - *错误提示缺少依赖库*:需安装系统级依赖(如`python3-dev`): ```bash sudo apt-get install python3-dev # Ubuntu/Debian ``` - *权限不足*:添加`--user`选项安装到用户目录: ```bash python3 -m pip install --user libact ``` #### 步骤3:从源码编译安装(若pip失败) 1. **克隆仓库并安装**: ```bash git clone https://github.com/ntucllab/libact.git cd libact python3 setup.py install ``` 2. **依赖问题处理**: 若提示缺少`Cython`或`numpy`,需手动安装: ```bash python3 -m pip install Cython numpy ``` #### 步骤4:验证安装 启动Python解释器,测试导入是否成功: ```python import libact print(libact.__version__) ``` 若无报错,则安装完成。 --- ### 可能遇到的问题及解决 1. **环境变量配置错误** 若出现`libpython3.7m.so.1.0`缺失,需添加环境变量: ```bash export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/python3.7/lib [^2] ``` 2. **SSL模块错误** 若提示`urllib.error.URLError`,可能是SSL证书问题,尝试: ```bash python3 -m pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org libact ``` 3. **兼容性问题** `libact`官方可能未适配Python 3.7,可尝试降低Python版本(如3.6)或使用虚拟环境隔离。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值