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/
- 下载依赖:
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
- 下载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
- 解压源码包,然后tar包就可以删除了。
还是在home目录:
tar -zxvf Python-3.6.8.tgz
rm -rf Python-3.6.8.tgz
参数解释:
- z 调用gzip指令,解压缩文件
- x 解包,解开tar的压缩格式
- v 显示操作过程
- f 指定压缩文件名字
- 进入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。
- 配置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
- 这里在配置一个软链,防止有些权限较低的程序无权限调用
/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
- 验证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标志的链接,下载解释器到本地
2. 双击下载到本地的可执行的安装文件,自定义安装Python解释器。按照下面图片的操作示例进行操作
- Install lanuncher for users(recommended):这个选项如果无法勾选,一般是因为你的电脑中可能之前已经安装了,如果是新的环境,能勾选上就勾选上,不能勾选上也就算了,具体是干嘛的,参考:https://www.cnblogs.com/Neeo/articles/8393805.html
- Add Python3.9 to PATH:这个选项务必手动勾选,它的作用是勾选后,安装程序会自动地将Python安装目录和安装目录的Scritps目录添加到系统的环境变量中去,以便后续在整个系统中调用Python解释器和pip。当然,你这里不勾选,后续也可以自己去添加环境变量。
3. 可选特性窗口,能勾选的都勾选吧,然后选择Next
其中最重要的,也是务必勾选的:
- Documentation:不用解释了吧,安装帮助文档。
- pip:包管理工具,这个非常重要,勾选它。
4. 高级参数这里,打死都要勾选Install for all users,然后选择一个比较浅的目录中一般都是C盘根目录,或者下图中默认的目录中(Windows中64位软件的默认安装目录)
PS:由于工作原因,我无数次的问小白:你的Python安装到哪了?都会得到否定的答案或者摸棱两可的答案。最后我发现,他们通常都是双击安装包,然后选择Install Now进行安装的,这种安装方式,会将Python安装到系统的当前用户中,且安装目录非常深,找起来特别麻烦!所以,还是自定义安装吧!!!
安装过程,不用管它:
5. 安装成功,点击Close
6. 打开终端进行测试
打开终端(cmd,win+r
键输入cmd回车),输入:
python -V
pip -V
返回各自的版本号即可,如下图所示就说明安装成功:
最后,继续在终端中输入下面的命令,将pip的版本升级到最新
python -m pip install --upgrade pip
PS:由于我们这里安装示例使用的是Python最新的版本,所以,pip的版本也是最新的,但是如果你安装的是其他的Python版本,将pip升级到最新是最好的,这样可避免一些模块安装失败的问题。
OK,Python解释器在Windows平台安装完成,安装过程非常的简单。
欢迎斧正,that's all