• 源码安装python


    前端时间,在debian10的机器上要使用比较新的版本的python,因此需要自己手动去编译一个。python用的少,这次做了,就记录一下,以后再用,可以回头看看。

    1. 在编译之前,最好安装好libffi-dev,比如需要使用pyinstaller时,如果没有安装这个东西,就会报错,No module named '_ctypes',到时候就需要重新编译,费事。因此在动手之前,先安装上。

    2. 下载tar.xz的源码,tar -xf解压缩后,进入文件夹执行:

    ./configure --prefix=/usr/local/bin/python3.8.2/ --with-openssl=/usr/local/openssl/ --enable-shared

    --prefix是安装目录

    --enable-shared是编译后,会生成python的库。如果需要使用pyinstall来编译可执行程序,那么需要带上这个选项。编译好后,make Install。但是发现,没有将生成的libpython*.so放到系统常见的路径下,比如/lib/x86_64-linux-gnu/,而且因为这个导致python无法运行。在命令行调用python3 --version,就会报错,说找不到libpython3.8.so.1.0。所以,在编译完后,手动将libpython3.8.so.1.0拷贝到/lib/x86_64-linux-gnu/下。然后再运行python3 --version就没有问题了。

    --with-openssl=/usr/local/openssl/ 这个是让编译生成的python支持ssl。务必带上这个,不然后面使用编译后的pip去下载包的时候,如果是公网,比如清华的,那就必须得支持ssl。另外/usr/local/openssl是ssl所在的路径。这个路径下包括bin(里面有openssl),还有lib(里面有libcrypto.so和libssl.so),编译的过程中会链接lib下的库。如果没有openssl,那么下载openssl的包,解压缩后:

    ./config --prefix=/usr/local/openssl

    make

    make install

    这里--prefix后面的就是make install时openssl的安装目录。注意make install时权限问题,像上面安装到/usr/local/openssl下,需要root权限。

    对了,除了添加 --with-openssl=/usr/local/openssl/ ,还需要修改在python源码下Modules文件夹下Setup文件,修改内容:

    就是修改SSL,SSL=,“=”右边的是openssl所在的路径

    在python源代码文件夹下做完./configure后,执行make & make install.

    这里建议make之前做一下make clean。因为如果曾经做过make,不带ssl,现在这里带上ssl,不clean直接make,还是会报错,未定义的openssl的一些函数。后来make clean后,再make,就没有问题。

    创建快捷方式:

    ln -s /usr/local/bin/python3.8.2/bin/python3 /usr/bin/python3

    ln -s /usr/local/bin/python3.8.2/bin/pip3 /usr/bin/pip

    pip批量安装:

    pip install -r requirements.txt

    如果pip install报错,pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

    原因就是python不支持openssl,需要重新编译python,带上openssl。

    pip install时报错,ERROR: Can not execute `setup.py` since setuptools is not available 

    这种情况下,需要安装setuptools,如下:

    pip3 install --upgrade setuptools

  • 相关阅读:
    .NET代码调优让程序占用内存减少
    医学图像匹配,c++计算归一化互相关
    【SpringMVC笔记12】SpringMVC集成Thymeleaf模板引擎
    ansible搭建
    图解八股,真的太顶了
    python中的各种打断方式、终止代码
    获取外网IP接口
    【python基础】format格式化函数的使用
    Kamiya丨Kamiya艾美捷小鼠脱细胞素ELISA说明书
    Elasticsearch安装和下载教程
  • 原文地址:https://blog.csdn.net/guolisong/article/details/126071208