Centos7安装python3.6与python2.7共存(详细不破坏yum版)

Python IT敢客 3个月前 (08-28) 1196次浏览 已收录 0个评论 扫描二维码

       说到要安装 python3.6,是因为 python2.7 的维护周期到 2020 年就结束了。所以现在越来越多的 python 从业者都开始慢慢转向 python3 了,而很可惜的是,现在许多 linux 系统还是自带的 python2.6 或者 python2.7!这里面有很大一部分原因是 yum 导致的!所以既要保持 yum 不出问题,又想使用 python3,就只能让 python3 和 python2 共存了!网上也有许多安装方法,但是或多或少有点问题。所以我总结了一下最详细的又最安全的安装方法。

       1、安装 python3.6 可能使用的依赖

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

       2、安装 python3.6

下载 python3.6 编译安装 ,到 python 官网下载https://www.python.org ,下载最新版源码,使用 make altinstall,如果使用 make install,在系统中将会有两个不同版本的 Python 在/usr/bin/目录中。这将会导致很多问题,而且不好处理。

wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
mkdir /usr/local/python3
tar -xzvf Python-3.6.6.tgz 
cd Python-3.6.6
./configure --prefix=/usr/local/python3 --enable-optimizations
make
make altinstall

以下说明 python3.6 的目录

python3.6 程序的执行文件:/usr/local/python3/bin/python3.6
python3.6 应用程序目录:/usr/local/python3/lib/python3.6
pip3 的执行文件:/usr/local/python3/bin/pip3.6
pyenv3 的执行文件:/usr/local/python3/bin/pyenv-3.6

3、更改 python 的链接

cd/usr/bin
cp python2.7{,.bak}
cp pip2.7{,.bak}
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip

4、修改 yum 等依赖 python2 的执行文件

主要有这几个文件一定要修改,其他需要用的时候在修改即可。

cd /usr/bin
yum yum-config-manager yum-debug-restore yum-groups-manager yum-builddep yum-debug-dump yumdownloader firewall-cmd
/usr/libexec/urlgrabber-ext-down
cd /usr/sbin
authconfig authconfig-tui firewalld tuned tuned-adm yum-complete-transaction yumdb
更改以上文件头为
#!/usr/bin/python 改为 #!/usr/bin/python2

其实还有许多文件要修改,当需要用的时候在修改吧。用下面的命令可以看出许多都是依赖原先 python2 的。

cd /usr/bin
grep -ir '/usr/bin/python' *|grep -v python2.7|grep -v Binary

这里就不一一列举了!


       接下来额外讲一点 python 虚拟环境的事,为啥需要 python 虚拟环境呢,因为往往因为不同开发需要不同的 python 环境或者不同的 python 依赖包环境,有的需要安装 django,有的只要 scrapy,有的只做运维用等等,这样混在一起就可能比较麻烦,尤其是同一个依赖包不同的版本的问题。为了解决这个问题,python 虚拟环境就非常的方便,可以针对的不同的需求来建立多个 python 虚拟环境,每个需求运行在单独的虚拟环境中互不干扰。好了,接下来说说怎么安装 python 虚拟环境吧。

virtualenv

virtualenv 是一个可以在同一计算机中隔离多个 python 版本的工具。

安装:

pip install virtualenv

使用方法

1. 创建环境
  • virtualenv [新环境名] :这会再当前目录下创建一个新环境目录
  • 可使用 virtualenv –help 来查看如何使用。可以使用参数 --python=/usr/bin/python3 来创建一个已经安装的的 Python 环境。
2. 使用环境
  • 切换到新环境目录
  • 执行:source ./bin/activate 来激活环境,激活后在命令行的前面会出现新环境名称
  • 接下来可使用 pip 命令安装新环境需要的各种包。(pip 命令在创建新环境时自带)
3. 退出虚拟环境
  • deactivate
  • 如果要删除虚拟环境,只需退出虚拟环境后,删除对应的虚拟环境目录即可。不影响其他环境。
4. 注意事项
  • 如果没有启动虚拟环境,系统也安装了 pip 工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc 文件中加上:export PIP_REQUIRE_VIRTUALENV=true
  • 或者让在执行 pip 的时候让系统自动开启虚拟环境:export PIP_RESPECT_VIRTUALENV=true

virtualenvwrapper

virtualenvwrapper 是 virtualenv 的扩展管理包,用于更方便管理虚拟环境,它可以做:

  1. 将所有虚拟环境整合在一个目录下
  2. 管理(新增,删除,复制)虚拟环境
  3. 切换虚拟环境

安装

pip install virtualenvwrapper

使用方法

1. 初始配置

默认 virtualenvwrapper 安装在/usr/local/bin 下面,实际上需要运行 virtualenvwrapper.sh 文件才行;所以需要先进行配置一下:

    • 创建虚拟环境管理目录: mkdir /env/
    • 在~/.bash_profile 中添加行:
# load virtualenvwrapper for python (after custom PATHs)
venvwrap="virtualenvwrapper.sh"
/usr/bin/which -a $venvwrap
if [ $? -eq 0 ]; then
    venvwrap=`/usr/bin/which $venvwrap`
    source $venvwrap
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export WORKON_HOME=/env/.virtualenvs
export PROJECT_HOME=/env/workspace
source /usr/local/python3/bin/virtualenvwrapper.sh
export PIP_REQUIRE_VIRTUALENV=true
  • 启动 virtualenvwrapper: source ~/.bash_profile
2. 使用方法

所有的命令可使用:virtualenvwrapper --help 进行查看,这里列出几个常用的:

  • 创建基本环境:mkvirtualenv [环境名]
  • 删除环境:rmvirtualenv [环境名]
  • 激活环境:workon [环境名]
  • 退出环境:deactivate
  • 列出所有环境:workon 或者 lsvirtualenv -b

配上我的别名设置:

# virtualenv
alias vte='virtualenv'
alias mkvte='mkvirtualenv'
alias deact='deactivate'
alias rmvte='rmvirtualenv'

所有命令都可在后面使用 --help 参数查看具体用法!Enjoy it !

还有什么问题的就靠各位网友继续发现了!Centos7 安装 python3.6 与 python2.7 共存(详细不破坏 yum 版)


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Centos7 安装 python3.6 与 python2.7 共存(详细不破坏 yum 版)
喜欢 (5)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址