CentOS7安装python3
路上有多少个坑,只有自己走过才知道。可能你遇到到我没遇到的问题,但是终点只有一个。
首先,你要知道系统现在的python的位置在哪儿:
[admin@localhost home]$ whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
可以知道我们的python在 /usr/bin目录中
[admin@localhost home]$ cd /usr/bin/
[admin@localhost bin]$ ll python*
lrwxrwxrwx. 1 root root 7 10月 22 11:05 python -> python2
lrwxrwxrwx. 1 root root 9 10月 22 11:05 python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 7月 13 21:07 python2.7
可以看到,python指向的是python2,python2指向的是python2.7,因此我们可以装个python3,然后将python指向python3,然后python2指向python2.7,那么两个版本的python就能共存了。
下载python3 的依赖包,用于编译python3:
(sudo) yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
默认centos7没有安装pip,安装python2的pip
# 先检查能不能 ping 通
# 运行这个命令添加epel扩展源
(sudo) yum -y install epel-release
--------------------------
如果不用python2的pip可以不用安装
# 安装pip
(sudo) yum install python-pip
# 用pip更新自己
(sudo) pip install --upgrade pip
--------------------------
用wget下载python3的源码包
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
编译安装python3源码包
# 解压
xz -d Python-3.6.4.tar.xz
tar -xf Python-3.6.4.tar
# 进入Python-3.6.4
cd Python-3.6.4
# 指定安装目录
(sudo) ./configure prefix=/usr/local/python3
# 安装, 这一步一定要切换到root,不知道为什么其他用户提示权限不够
su root
make && make install
如果最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录
添加软链接
# 将原来的链接备份
mv /usr/bin/python /usr/bin/python.bak
# 添加python3的软链接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
# 测试是否安装成功了
[root@localhost Python-3.6.4]# python -V
Python 3.6.4
[root@localhost Python-3.6.4]# python2 -V
Python 2.7.5
[root@localhost Python-3.6.4]# python3 -V
Python 3.6.4
更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用
vi /usr/bin/yum
把#! /usr/bin/python修改为#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把#! /usr/bin/python 修改为#! /usr/bin/python2
这个是防火墙保存
vi /usr/bin/firewall-cmd
把#!/usr/bin/python -Es 改为 #!/usr/bin/python2.7 -Es
vi /usr/sbin/firewalld
把#!/usr/bin/python -Es 改为 #!/usr/bin/python2.7 -Es
配置pip
查看pip
[root@localhost Python-3.6.4]# pip -V
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
设置把pip指向python3,(安装好python3后,里面就已经下载了pip3了,无需额外下载)
# 进入usr/bin目录
cd /usr/bin
# 查看pip前缀的文件
ll pip*
# 备份pip文件
mv /usr/bin/pip /usr/bin/pip.bak
# 重新设置pip文件
ln -s /usr/local/python3/bin/pip /usr/bin/pip
ln -s /usr/local/python3/bin/pip /usr/bin/pip3
# 用pip更新自己
(sudo) pip install --upgrade pip
# 测试是否安装成功了
[root@localhost bin]# pip -V
pip 9.0.1 from /usr/local/python3/lib/python3.6/site-packages (python 3.6)
[root@localhost bin]# pip2 -V
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
[root@localhost bin]# pip3 -V
pip 9.0.1 from /usr/local/python3/lib/python3.6/site-packages (python 3.6)
安装virtualenvwrapper
pip install virtualenvwrapper
注意: windows安装需要在后面加上-win:
在.bashrc文件中加入下行环境变量(注意:下面的路径可能有不一样,确定好再写)
# 指定python变量
echo 'export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python' >> .bashrc
# 设置虚拟环境安装位置
echo 'export WORKON_HOME=/var/envs' >> .bashrc
# 指定virtualenvwrapper.sh 文件
echo 'source /usr/local/python3/bin/virtualenvwrapper.sh' >> .bashrc
# 也就是在 .bashrc 后面追加
运行:
source ~/.bashrc
对于找不到 virtualenv 的报错解决
出现这种错误,是因为 virtualenv 这个基础依赖包被安装在默认 Python 目录下,就需要做一个软连接 ln -s。
ERROR: virtualenvwrapper could not find virtualenv in your path
首先还是用 find / -name "virtualenv" 去找到位置
sudo find / -name "virtualenv"
/usr/local/python3/bin/virtualenv
最后进行软连接
sudo ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
网友评论