1-Python - 各平台配置Python环境

about

本篇介绍各平台搭建Python环境。

所有版本的Python安装包都可以在这个链接中下载:https://www.python.org/ftp/python/

CentOS 7

环境是:centos7.3 + python3.6.8 + xshell

这里介绍两种安装方式:

  • yum安装,简单省事儿,但截至到本篇博客编写时,默认的,你只能安装的最高Python版本为3.6,如果你想要安装更高版本的Python,你要手动的配置别的源。如果你的系统中只需要一个Python环境,且是3.6及以下版本,推荐使用yum,因为太简单了。
  • 源码安装,各种版本任选,安装位置任选,适用于复杂的多版本Python环境。

无论哪种方式安装,这里推荐你无脑的安装以下相关依赖:

yum install -y epel-release
yum update -y
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

yum安装

安装:

[root@cs /]# yum install python36 -V

默认的,它的pip会被安装到/usr/lib/python3.6这个目录内。并且配置好了软连接,所以你可以直接用了:

[root@cs /]# python3 -V
Python 3.6.8
[root@cs /]# pip3 -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

完事!

编译安装Python3.6

所有版本的Python源码目录:https://www.python.org/ftp/python/

  1. 下载依赖:
yum install -y epel-release
yum update -y
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
  1. 下载Python的源码包,可以选择下载各种版本的源码包,后续的步骤是一样的。

参考地址:https://www.python.org/ftp/python/3.6.8/
这里我们将源码包下载到home目录,所以先要切换到home目录。当然其他目录也无所谓,反正最后都要删除这个源码包的:

cd /home
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
  1. 解压源码包,然后tar包就可以删除了。

还是在home目录:

tar -zxvf Python-3.6.8.tgz
rm -rf Python-3.6.8.tgz

参数解释:

  • z 调用gzip指令,解压缩文件
  • x 解包,解开tar的压缩格式
  • v 显示操作过程
  • f 指定压缩文件名字
  1. 进入python3.6源码目录,准备开始编译。

当上一步在解压完毕后,home目录中会多一个解压后的目录,我们cd进去:

cd Python-3.6.8

然后,然后使用configure命令将Python安装到指定目录,--prefix参数是指定安装到哪里,以及检查Python编译所需的依赖关系是否正常:

./configure --prefix=/usr/local/src/python36/

现在,执行编译命令即可:

make && make install

PS:make是编译,make install是编译安装,只有make编译成功了才会继续make install 安装 python3。

  1. 配置PATH。

编译安装结束后,配置PATH环境变量才能更方便的使用。
这里演示永久添加python3的PATH路径,首先要知道Python的安装路径:

[root@cs Python-3.6.8]# ls /usr/local/src/python36/
bin  include  lib  share
[root@cs Python-3.6.8]# ls /usr/local/src/python36/bin/
2to3  2to3-3.6  easy_install-3.6  idle3  idle3.6  pip3  pip3.6  pydoc3  pydoc3.6  python3  python3.6  python3.6-config  python3.6m  python3.6m-config  python3-config  pyvenv  pyvenv-3.6

如上,Python的安装目录是/usr/local/src/python36/,而需要添加到PATH中的路径使其中的bin目录,也就是/usr/local/src/python36/bin/目录。
现在,编辑/etc/profile文件:

vim /etc/profile  #打开全局环境变量配置文件

在文件的最后,追加写入如下内容:

export PATH=/usr/local/src/python36/bin/:$PATH

其原理就是,将当前/usr/local/src/python36/bin/目录添加到原有的$PATH前面,说白了就是路径拼接:

# 如原来的PATH是
/opt/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 那现在python的环境变量路径就用 :符号拼接到原来的路径前面
/usr/local/src/python36/bin/:/opt/mysql/bin:/opt/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 所以,你其实也可以在/etc/profile 文件中追加上这个拼接后的路径
PATH='/usr/local/src/python36/bin/:/opt/mysql/bin:/opt/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'

写进入之后wq保存退出,使用如下命令使配置立即生效:

source /etc/profile
  1. 这里在配置一个软链,防止有些权限较低的程序无权限调用/etc/profile,但又有需要调用Python的情况:
[root@cs Python-3.6.8]# ln -s /usr/local/src/python36/bin/python3 /usr/bin/python3
[root@cs Python-3.6.8]# ln -s /usr/local/src/python36/bin/pip3 /usr/bin/pip3
  1. 验证python3和pip3是否正常
which python3
which pip3 
python3 -V
pip3 -V

编译安装Python3.11

centos7.5 + python3.11.4

安装

一晃3.6版本的解释器也老了,Python3.12都出来了,所以,我只好更新下新版的解释器的安装,当然,不会安装最新的,这里以3.11版本为例。

首先下载依赖:

yum install -y epel-release
yum update -y
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

然后官网下载tar包。

https://www.python.org/ftp/python/
https://www.python.org/ftp/python/3.11.4/
也可以从百度云盘链接中下载 https://pan.baidu.com/s/1sape5Knm1AZ0BNnoi3NJEw?pwd=7nzz 提取码:7nzz

下载到你的centos中之后,就可以进行解压并且编译安装了,各个命令啥意思,我就不解释了,参考3.6安装过程的解释。
我这边将python3.11安装位置是/opt目录下。
1. 下载并且解压

cd /opt/
mkdir python311
wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz
tar xvf Python-3.11.4.tar.xz

[root@cs local]# cd /opt/
[root@cs opt]# mkdir python311
[root@cs opt]# wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz
[root@cs opt]# tar xvf Python-3.11.4.tar.xz
[root@cs opt]# ls
Python-3.11.4					# 解压包解压后的安装包
Python-3.11.4.tar.xz			# 最初的从官网上下载的压缩包
python311                       # 将来Python3.11.4版本的解释器最终的安装目录

2. 编译安装

cd /opt/Python-3.11.4/
./configure --prefix=/opt/python311/  && make -j$(nproc) && make install -j$(nproc)

[root@cs opt]# cd /opt/Python-3.11.4/
[root@cs Python-3.11.4]# ./configure --prefix=/opt/python311/  && make -j$(nproc) && make install -j$(nproc)

3. 添加环境变量和建立软连

echo "export PATH=/opt/python311/bin:\$PATH" >> /etc/profile
source /etc/profile

rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
ln -s /opt/python311/bin/python3 /usr/bin/python3
ln -s /opt/python311/bin/pip3 /usr/bin/pip3


# 删除可能存在一些其他版本的遗留的软连,然后重新建立软连接
[root@cs opt]# rm -rf /usr/bin/python3
[root@cs opt]# rm -rf /usr/bin/pip3
[root@cs opt]# ln -s /opt/python311/bin/python3 /usr/bin/python3
[root@cs opt]# ln -s /opt/python311/bin/pip3 /usr/bin/pip3

4. 测试

python3 -V
pip3 -V


[root@cs opt]# python3 -V
Python 3.11.4
[root@cs opt]# pip3 -V
pip 23.1.2 from /opt/python311/lib/python3.11/site-packages/pip (python 3.11)

哦了。

ssl的问题

安装完了,但问题还是有的,貌似说是Python3.9之后,openssl这块的要求需要openssl的版本是1.1.1及以上版本才行。
注意,有个坑,截止到编写这个帖子的时候,openssl的版本是3.x版本,但是我们能从cenots7中默认的openssl1.0.2版本升级到openssl3.x版本。
但是坑爹的是解决不了Python解释器报ssl相关错误的问题,经过测试,还是安装openssl1.1.1版本最合适。
但centos7中的openssl默认版本是1.0.2

[root@cs opt]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

如果不升级openssl的版本,那么你可能会遇到相关的报错,比如:

ModuleNotFoundError: No module named '_ssl'
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2

这两个报错都是跟openssl版本低有关系。

ModuleNotFoundError: No module named '_ssl'

这个是openssl有问题,选择升级openssl的版本到openssl1.1.1。
我们可以在Python中导入一下看看:

好吧,报错了,不过无所谓,我们直接手动装个高版本的就好了。
具体参考:https://www.cnblogs.com/Neeo/articles/17861749.html
1. 下载依赖:

yum update -y
yum install -y perl-IPC-Cmd
yum install -y openssl openssl-devel
yum install -y zlib zlib-devel openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++
yum install -y wget

2. 下载tar并编译安装
下载openssl的tar包,并且安装,如果openssl的tar包下载失败,可以从百度云盘链接中下载https://pan.baidu.com/s/1sape5Knm1AZ0BNnoi3NJEw?pwd=7nzz 提取码:7nzz
下面的命令,直接无脑复制粘贴就行了。

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
cd /opt
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config -Wl,-rpath=/usr/lib64 --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --libdir=/usr/lib64 && make -j 4 && make install
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
openssl version

3. 然后重新编译Python:

cd /opt/Python-3.11.4/
./configure --prefix=/opt/python311/ --with-openssl=/usr/local/openssl  && make -j$(nproc) && make install -j$(nproc)

[root@cs openssl-1.1.1]# cd ../Python-3.11.4
[root@cs Python-3.11.4]# ./configure --prefix=/opt/python311/ --with-openssl=$HOME/openssl  && make && make install

4. 测试
现在ssl导入就不报错了,也是我们安装的版本:

[root@cs Python-3.11.4]# python3
Python 3.11.4 (main, Nov 22 2023, 19:43:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl      
>>> ssl.OPENSSL_VERSION_INFO
(1, 1, 1, 23, 15)

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2

这个问题是urllib3的版本是v2.0,它依赖openssl的版是1.1.1+。

解决方式有两个:

  • 升级openssl,参考上面那个ssl报错部分吧,安装openssl1.1.1。
  • 降级urllib3,步骤参考下面。
原来的urllib3的版本是2.0.3,现在降到1.26.15
pip install urllib3==1.26.15

Mac OS

这里使用brew命令进行安装,如果你的系统没有安装brew,请在终端中使用下面命令安装或者参考官网,Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

测试homebrew是否安装成功,终端执行:

neeodeMac:~ neeo$ brew --version
Homebrew 2.2.9-23-g78140ce
Homebrew/homebrew-core (git revision 49aa8; last commit 2020-03-07)

接下来使用brew命令安装python3.7:

brew install python3

测试是否安装成功:

neeodeMac:~ neeo$ python3 -V
Python 3.7.6
neeodeMac:~ neeo$ pip3 -V
pip 19.3.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

由于Mac 默认已经安装python2.7,所以,这里我们使用python3和pip3来使用python3和pip。

Windows

win10 + Python3.9.6
https://www.python.org/ftp/python/
https://www.python.org/ftp/python/3.9.6/

这里以Python目前的最新版3.9.6版本为例,本教程也适用于Python3.x版本的安装。但推荐大家安装使用Python3.6及以上版本。
1. 访问这个地址:https://www.python.org/ftp/python/3.9.6/选择带amd64标志的链接,下载解释器到本地

image

2. 双击下载到本地的可执行的安装文件,自定义安装Python解释器。按照下面图片的操作示例进行操作

  • Install lanuncher for users(recommended):这个选项如果无法勾选,一般是因为你的电脑中可能之前已经安装了,如果是新的环境,能勾选上就勾选上,不能勾选上也就算了,具体是干嘛的,参考:https://www.cnblogs.com/Neeo/articles/8393805.html
  • Add Python3.9 to PATH:这个选项务必手动勾选,它的作用是勾选后,安装程序会自动地将Python安装目录和安装目录的Scritps目录添加到系统的环境变量中去,以便后续在整个系统中调用Python解释器和pip。当然,你这里不勾选,后续也可以自己去添加环境变量。

image

3. 可选特性窗口,能勾选的都勾选吧,然后选择Next
其中最重要的,也是务必勾选的:

  • Documentation:不用解释了吧,安装帮助文档。
  • pip:包管理工具,这个非常重要,勾选它。

image

4. 高级参数这里,打死都要勾选Install for all users,然后选择一个比较浅的目录中一般都是C盘根目录,或者下图中默认的目录中(Windows中64位软件的默认安装目录)
PS:由于工作原因,我无数次的问小白:你的Python安装到哪了?都会得到否定的答案或者摸棱两可的答案。最后我发现,他们通常都是双击安装包,然后选择Install Now进行安装的,这种安装方式,会将Python安装到系统的当前用户中,且安装目录非常深,找起来特别麻烦!所以,还是自定义安装吧!!!

image
安装过程,不用管它:
image

5. 安装成功,点击Close
image

6. 打开终端进行测试
打开终端(cmd,win+r键输入cmd回车),输入:

python -V
pip -V

返回各自的版本号即可,如下图所示就说明安装成功:
image

最后,继续在终端中输入下面的命令,将pip的版本升级到最新

python -m pip install --upgrade pip

PS:由于我们这里安装示例使用的是Python最新的版本,所以,pip的版本也是最新的,但是如果你安装的是其他的Python版本,将pip升级到最新是最好的,这样可避免一些模块安装失败的问题。

OK,Python解释器在Windows平台安装完成,安装过程非常的简单。


欢迎斧正,that's all
posted @ 2020-06-27 21:39  听雨危楼  阅读(888)  评论(0编辑  收藏  举报