源码安装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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值