python3.7的安装与遇到的问题
实验组项目需求,需要使用 Python + Virtualenv + Django + Postgressql等。将使用的过程以及遇到的问题记录下来,作为备份和分享。
安装
Ubuntu系统自带的原有的 python 版本不支持项目需求,需使用 3.7版本。查找博客进行了安装过程。将自己安装过程以及遇到的问题作为记录,以备后用。
环境:
- ubuntu 18.04
- python 3.7
准备工作(常规下载解压)
- 下载 python3.7 的源代码:
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
- 解压缩文件
tar -zxvf Python-3.7.3.tgz
- 创建文件夹来存储 python 3.7 程序
mkdir /usr/local/python3
编译安装
- 若要对 python 的源代码进行编译首先安装 gcc 编译工具
sudo apt install gcc
此外还需要安装一堆的支持与依赖:(参照网上大家安装的内容)。不同人的系统缺少的可能不同。如果缺少什么,建议自行百度搜索安装。本人只安装了如下的
sudo apt-get install build-essential python-dev python-setuptools libpq-dev
sudo apt install python-smbus build-essential libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev
- 打开加压后的 python 文件夹,进行编译与安装
sudo ./configure --prefix=/usr/local/python371 --enable-optimizations # 将程序安装在指定的文件夹中
make # 编译
sudo make install # 安装
编译和安装,如果没有error
,那么就安装成功了。
配置与测试
由于自带的 python 版本不是 3.7 ,需要进行配置,使终端在执行 python3
的时候,默认调用 python 3.7 。
- 建立软连接:
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
- 测试
$ python3
Python 3.7.3 (default, Jun 2 2020, 03:13:27)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
版本若是显示的你下载的版本,则安装无误。
python 3.7 的安装过程如上结束了。下一章节记录一下安装 python 3.7 和使用 pip3 的时候遇到的一些问题。
遇到的问题(踩到的坑)
make install 时候的问题
- ModuleNotFoundError: No module named ‘_ctypes的错误。(缺少依赖没有安装)
解决方法:
sudo apt install libffi-devel
python3中有个内置模块叫ctypes,它是python3的外部函数库模块,提供了兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用centos7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。
由于在centos7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了"ModuleNotFoundError: No module named ‘_ctypes’"的错误。
————————————————
版权声明:本文为CSDN博主「海棠未满」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36416904/article/details/79316972
pip3
subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.
解决方法:
sudo rm /usr/bin/lsb_release
版本替换完成后:
执行 apt-get update
命令:出现如下问题:
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 8, in <module>
from CommandNotFound.db.creator import DbCreator
File "/usr/local/python/lib/python3.7/CommandNotFound/db/creator.py", line 11, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code
解决方法参照下文:
- 解决更换python版本出现 ModuleNotFoundError: No module named 'apt_pkg’等错误