[linux]ubuntu16.04 安装python3.8过程记录


之前早就买了个阿里云服务器(低配版),但是一直没怎么鼓捣,最近开始搭建自己的一个博客(小站是www.vanjoe.top,正在完善),此篇随笔记录搭建过程中关于Python3.8的安装过程。
系统是Ubuntu16.04,自带python2.7和python3.5,查了下,Python3.8可以共存。
1.下载安装
源码安装包 官网https://www.python.org/downloads/,我这里下载了3.8版本
直接在系统内下载 wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz

2.解压释放 tar -zxvf Python-3.8.0.tgz

3.配置安装路径
先进入安装包文件 执行 cd Python-3.8.0/
然后配置安装路径,将相关配置都存放于同一个文件夹目录下,便于管理
./configure prefix=/usr/local/python38

4.编译和安装
make && make instal

5.建立软链接
由于我之前有过python3版本,所以我用python38指向python3.8解释器,建立软链接。
ln -s /usr/local/python38/bin/python3.8 /usr/local/bin/python38

踩过的坑****
安装完了出现下面的问题:
ModuleNotFoundError: No module named '_ctypes' ERROR:Command errored out with exit status 1: python
一查发现是由于安装之前相关依赖包没有安装所导致的

解决办法:下载安装下面这些库,然后重新编译python源文件(make altinstall)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install libmysqlclient-dev
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev
成功,最后python指向python2.7解释器,python3指向python3.5解释器,python38指向python3.8解释器。

总结:编译安装python源文件之前必须配置依赖环境,不然安装完后安装库的时候会出错,命令如下:
配置依赖环境:sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev


相关知识点补充:=====
a、 ./configure –prefix 命令用法
源码的安装一般由有这三个步骤:配置(configure)、编译(make)、安装(make install)。
Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。
其中–prefix选项就是配置安装的路径。
如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较分散。为了便于集中管理某个软件的各种文件,可以配置–prefix,如:
./configure –prefix=/usr/local
可以把所有资源文件放在/usr/local的路径中,就不会分散了。
用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单地删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。
当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。
【版权声明:此段文字为CSDN博主「痴迷乐极」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_27984355/java/article/details/81603315】

b、 ln -s命令用法:
ln -s 它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。
这个命令最常用的参数是-s,具体用法是:sudo ln -s 源文件 目标文件 链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。
  在硬链接的情况下,参数中的“目标”被链接至[链接名]。如果[链接名]是一个目录名,系统将在该目录之下建立一个或多个与“目标”同名的链接文件,链接文件和被链接文件的内容完全相同。如果[链接名]为一个文件,用户将被告知该文件已存在且不进行链接。如果指定了多个“目标”参数,那么最后一个参数必须为目录。
  如果给ln命令加上- s选项,则建立符号链接。如果[链接名]已经存在但不是目录,将不做链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。如果[链接名]是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原“目标”的符号链接文件。

统一声明:关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如找不到原创链接,如果有哪些问题、有哪些不妥或者侵犯到您的权益的地方,可以联系我,我马上修改。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM