You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

编译Python3.6源码遇zlib.h缺失错误,无root权限如何解决?

解决无root权限下编译Python3.6缺少zlib.h的问题

搞定这个问题不难!首先得提一句:直接跳过zlib模块真的不建议——Python好多核心功能(比如用pip安装压缩格式的包、用zipfile模块处理压缩文件)都依赖它,跳过之后这些功能直接失效。不过如果实在没办法,也有对应的方案,先给你说最优解:自己编译zlib到个人目录,再让Python编译时链接它,步骤如下:

步骤1:手动编译安装zlib到用户目录

  • 先下载和Python3.6兼容的zlib源码(推荐1.2.11版本),用命令行的话可以这样:
    wget https://zlib.net/fossils/zlib-1.2.11.tar.gz
    tar -xzf zlib-1.2.11.tar.gz
    cd zlib-1.2.11
    
  • 配置并编译安装到个人专属目录(比如~/local/zlib,这个路径可以自己改):
    ./configure --prefix=$HOME/local/zlib
    make && make install
    

步骤2:重新配置Python3.6的编译参数

  • 回到Python3.6的源码目录,先清理之前的编译残留文件:
    make distclean
    
  • 配置Python编译参数,指定刚才安装的zlib路径,同时把Python安装到个人目录(避免权限问题):
    ./configure --prefix=$HOME/local/python3.6 --with-zlib=$HOME/local/zlib
    
  • 最后编译安装Python:
    make && make install
    

(不推荐)如果一定要跳过zlib模块

如果实在不想折腾编译zlib,也可以通过修改Python源码的配置文件来跳过它,但请务必注意:这样做会导致很多Python功能无法使用:

  • 打开Python源码目录下的Modules/Setup文件
  • 找到下面这一行,在开头加上#把它注释掉:
    # zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
    
  • 保存文件后,重新运行make && make install即可完成编译

内容的提问来源于stack exchange,提问作者Ankur S

火山引擎 最新活动