【Centos7】如何在Linux下安装和使用 python

 获取权限

  • 图形界面中(ctrl+ alt+F2 进行切换),左上角应用程序,选择终端,输入:
su
然后根据提示输入密码,即可进入得到root权限
复制代码

基础环境

  • 先安装安装几个必须的包,以方便后续的操作
➜  yum install wget gcc make
➜  # wget 用于下载源码包
➜  # gcc 和 make 用于编译
复制代码

下载python包

打开网页,www.python.org,在download页面中找到要下载的版本(此处是python3.6.5),保存到home文件夹中,然后解压缩。(提取)

  • 编译
➜  cd Python-3.6.5
➜  ./configure --prefix=/usr/local/python3.6 --enable-optimizations
➜  
复制代码

先解释下上面的参数,--prefix 是预期安装目录,--enable-optimizations 是优化选项(LTO,PGO 等)加上这个 flag 编译后,性能有 10% 左右的优化(如果没记错的话),但是这会明显的增加编译时间。不过关于 LTO 和 PGO 其实不在今天文章的讨论范围内,建议感兴趣的可以看看 GCC 中 LTO 的具体实现。我应该不太可能去写相关的文章 哈哈哈 毕竟写起来就会停不下来。

接下来

➜  make
➜  make install
复制代码

会看到出错了,提示 zlib not available 所以,我们需要装一下依赖

➜ yum install zlib-devel
复制代码

那为什么需要这个依赖包呢, 其实是因为 Python 有个很重要的内建模块 zipimport 用于从 Zip 压缩包中导入模块。 而如果没有 zlib 的包,那么就无法进行解压缩了,也自然该模块就不能使用了。

当我们的依赖安装好之后,重新执行上面的编译安装的步骤,发现执行成功。

➜  /usr/local/python3.6/bin/python3 --version
Python 3.6.5
复制代码

  • 检查

编译安装完还远远不够,我们来做些检查。

当我们运行 Python 终端,输入 import bz2 的时候,会发现没有这个模块。如果你对这个模块不熟悉,那也没关系。我们输入 import sqlite3熟悉 Python 的同学应该对 sqlite3 不会太陌生,但如果你还是不熟悉的话,那你按方向键试试看。有没有发现,输出变成了^[[D^[[A 类似这样的内容?

熟悉 Python 源码的同学,肯定知道我要说什么了。但是假如你不熟悉,没关系,我来告诉你。正常来讲,在终端下我们预期当输入上方向键,会显示上一条命令,输入左方向键,可以将光标移动到左侧。但现实和我们的预期不同,什么原因?

这里涉及到了一点点关于输入设备的历史原因,简单来说就是需要有个模块来对用户的输入进行转义。回到本文的重点,就是我们编译安装的时候缺少了 readline 这个模块。既然已经发现了问题,那解决的办法其实很简单

➜ yum install readline-devel
复制代码

安装完成后,重复上面的步骤,编译&&安装即可。

使用python写代码

Pip

安装好python后,接下来必装的就是pip了。

curl  https://bootstrap.pypa.io/get-pip.py | python
复制代码

 设置pip安装源,提高下载速度

创建文件夹

mkdir home/pip
复制代码

 利用cd 命令进入 pip 文件夹中,创建pip.conf文件

vi pip.conf
复制代码

输入以下命令,然后点击Esc,输入:wq 保存并退出。

[global] 
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
复制代码

安装setuptool

pip install ez_setup
复制代码

 尝试安装 scrapy,报错:error: command 'gcc' failed with exit status 1

解决办法:

yum install gcc libffi-devel python-devel openssl-devel
复制代码

编写python代码:

vi xxx.py
复制代码

 (Esc,:wq 保存并退出)

运行:

python xxx.py
复制代码

参考链接:segmentfault.com/a/119000000…

Guess you like

Origin juejin.im/post/7032555913668100103