linux系统中安装python_在Linux中编译安装Python3

在Linux系统中编译安装Python3,我想是一个Python学习者必经的一个环节。

你可以使用Ubuntu自带的Python3,不过你不能自由的控制版本,还要单独安装pip3,如果你想升级pip3,还会出现一些让人不愉快的使用问题。而在CentOS系统中,默认只有Python2,通过yum安装Python3,也同样面临版本落后以及pip3的问题。如果不自己编译安装,还有什么别的方法来一直保持使用最新的版本呢?!除非你用Win系统。

本文介绍如何在Ubuntu和CentOS这两个常用的LFS系统中,编译安装Python3的方法。主要的区别是,在这个两个平台上安装的依赖库不太一样(名称不一样)!在Linux系统中编译安装软件,最大的困扰,可能就是安装各种依赖库了。为了解决这个问题,yum,apt,docker等技术都出来了......

在CentOS中安装Python3需要的依赖库

$ sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel expat-devel gdbm-devel xz-devel db4-devel libpcap-devel

如果系统已经存在上面的某些库,以上安装指令只是对其进行升级,没有别的影响。

在Ubuntu中安装Python3需要的依赖库

$ sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libbz2-dev zlib1g-dev libffi-dev liblzma-dev

安装GCC

CentOS的minimal版本,以及Ubuntu,都没有预装gcc,如果你用的是这两个版本,需要确保系统有gcc编译器可以使用。安装和查看gcc的方法:

$ sudo yum install gcc # install gcc in centos

$ sudo apt install gcc # install gcc in ubuntu

$ which gcc # check if gcc is there

$ gcc --version # check gcc version

下载Python3源码并解压

使用curl或wget下载,然后解压:

$ curl -O https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

$ wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

$ tar zxf Python-3.7.3.tgz

执行configure

进入上一步的解压目录,然后执行configure:

$ cd Python-3.7.3

$ ./configure --prefix=/usr/local/python-3.7

然后,你会看到一推checking...在安装Python3需要的依赖包的情况下,不会有错误提示出现。--prefix的作用是给出一个安装路径。

我们可以在configure的时候,增加一个优化参数,--enable-optimizations。增加这个参数,会启动编译器的PGO( Profile guided optimization )优化,后续进行make的时候,Python3会执行一大推很费时费力的test来保证优化没有问题。如果你不赶时间,可以考虑加这个这个参数,因为你可以让Python的解释器的执行速度增加大概10%-20%。

$ ./configure --prefix=/usr/local/python-3.7 --enable-optimizations

make和install

最后,我们执行make和install的指令。

$ make && sudo make install

make install 前要有sudo,因为我们在configure的时候,指定的安装路径为系统路径,不是用户的/home/user路径。

创建符号链接

make和install成功之后,Python3就已经安装在了这个路径下:/usr/local/python-3.7。这个路径下的bin目录,包含了我们需要的程序:

$ pwd

/usr/local/python3.7/bin

$ ls -l

total 24720

lrwxrwxrwx. 1 root root 8 May 23 21:29 2to3 -> 2to3-3.7

-rwxr-xr-x. 1 root root 111 May 23 21:29 2to3-3.7

-rwxr-xr-x. 1 root root 251 May 23 21:29 easy_install-3.7

lrwxrwxrwx. 1 root root 7 May 23 21:29 idle3 -> idle3.7

-rwxr-xr-x. 1 root root 109 May 23 21:29 idle3.7

-rwxr-xr-x. 1 root root 233 May 23 21:29 pip3

-rwxr-xr-x. 1 root root 233 May 23 21:29 pip3.7

lrwxrwxrwx. 1 root root 8 May 23 21:29 pydoc3 -> pydoc3.7

-rwxr-xr-x. 1 root root 94 May 23 21:29 pydoc3.7

lrwxrwxrwx. 1 root root 9 May 23 21:29 python3 -> python3.7

-rwxr-xr-x. 2 root root 12620752 May 23 21:27 python3.7

lrwxrwxrwx. 1 root root 17 May 23 21:29 python3.7-config -> python3.7m-config

-rwxr-xr-x. 2 root root 12620752 May 23 21:27 python3.7m

-rwxr-xr-x. 1 root root 3115 May 23 21:29 python3.7m-config

lrwxrwxrwx. 1 root root 16 May 23 21:29 python3-config -> python3.7-config

创建符号链接的目的,是为了让我们在系统中的任何位置(路径)下,都可以直接输入python3来启动python解释器。为了达到这个目的,我们需要在/usr/bin路径下放置符号链接文件,指向上面的安装路径。

$ sudo ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python3

$ sudo ln -s /usr/local/python3.7/bin/pip3.7 /usr/bin/pip3

Ubuntu系统自带的Python3也是一个符号链接,指向同路径下的python3.x,必须要先删除这个符号链接,才能创建新的。同目录下的python3.x,这个信息也许在你需要恢复使用系统自带python3时,能用得上。

编译安装成功

按照以上步骤,编译安装就成功了,最后我们来做一点检查:

$ readlink /usr/bin/python3

/usr/local/python3.7/bin/python3.7

$ readlink /usr/bin/pip3

/usr/local/python3.7/bin/pip3

$ python3 -V

Python 3.7.3

$ pip3 -V

pip 19.0.3 from /usr/local/python3.7/lib/python3.7/site-packages/pip (python 3.7)

以上检查了我们创建的符号链接,并运行python3和pip3这两个程序,查看其对应的版本号。注意我们创建的符号链接是python3和pip3,后面都有3,这是为了与系统中的python(版本2)共存。

Ubuntu很适合当桌面环境。

现在不喜欢给pip创建符号连接了。用 python3 -m pip 的方式使用 pip,在install的时候,带上 --user 参数!(python3 -m pip install --user xxxxx)

-- EOF --

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值