未分类
centos7上Virtualenv从python3.4升级到Python3.7.4
目前我的虚拟环境python版本是3.4, 想升级到最新的3.7.4, 总结步骤如下: 首先激活当前env_py3环境, 并导出当前依赖包:
1 2 |
workon env_py3 pip freeze > requirements.txt |
首先安装依赖: 注意: libffi-devel必须安装, 不然编译安装会失败而导致安装不完整, 而创建虚拟环境时会报错(No module named ‘_ctypes’ )
1 2 |
yum -y install gcc gcc-c++ zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum -y install libffi-devel |
下载安装python3.7:
1 2 3 4 5 6 |
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz tar -zxvf Python-3.7.4.tgz cd Python-3.7.4/ mkdir /usr/local/python3.7 ./configure --prefix=/usr/local/python3.7 make && make install |
创建软链接:
1 2 |
ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python3.7 ln -s /usr/local/python3.7/bin/pip3 /usr/bin/pip3 |
配置虚拟环境:
1 2 3 4 5 6 7 8 9 10 |
#配置虚拟环境创建时默认用python3.7 virtualenv -p /usr/local/python3.7/bin/python3 /root/.virtualenvs ln -s /root/.virtualenvs/bin/activate /usr/bin/activate source activate #创建虚拟环境 mkvirtualenv -p /usr/local/python3.7/bin/python3 env_py3 #切换到虚拟环境 workon env_py3 #导入依赖包 pip install -r requirements.txt |
附: 我的系统配置文件: .bashrc:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
## virtualenv export PIP_REQUIRE_VIRTUALENV=true #pip安装东西的时候不安装到本地环境 export PIP_RESPECT_VIRTUALENV=true #在执行pip的时候让系统自动开启虚拟环境 export WORKON_HOME=$HOME/.virtualenvs #所有虚拟环境存储的目录 export PIP_VIRTUALENV_BASE=$WORKON_HOME export VIRTUALENV_USE_DISTRIBUTE=1 # 总是使用 pip/distribute #source /usr/local/bin/virtualenvwrapper.sh source /usr/bin/virtualenvwrapper.sh #if [ -e $HOME/.local/bin/virtualenvwrapper.sh ];then # source $HOME/.local/bin/virtualenvwrapper.sh #else if [ -e /usr/local/bin/virtualenvwrapper.sh ];then # source /usr/local/bin/virtualenvwrapper.sh # fi #fi # colourful man page export LESS_TERMCAP_mb=$'\E[01;34m' export LESS_TERMCAP_md=$'\E[01;34m' export LESS_TERMCAP_me=$'\E[0m' export LESS_TERMCAP_us=$'\E[01;32m' export LESS_TERMCAP_ue=$'\E[0m' export LESS_TERMCAP_so=$'\E[01;33;44m' export LESS_TERMCAP_se=$'\E[0m' TERM=xterm export TERM PATH="$PATH:$HOME/bin:/usr/local/python3.7/bin" export PATH |
旧的:升级python2.7.14: 在系统上升级python还是需要慎重, 严重的会导致系统命令不可用, 建议最好不要覆盖系统原本的/usr/bin/python文件 下面是升级脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#!/bin/bash export https_proxy=10.x.x.x:8888 export http_proxy=10.x.x.x:8888 py_version=`python -c "import platform;print platform.python_version()"` mkdir /opt/packages cd /opt/packages wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz tar -zxvf Python-2.7.14.tgz #pip freeze > requirments.txt cd Python-2.7.14 #解决Python升级找不到Tkinter模块 yum -y install tkinter #-ltk8.5 -ltcl8.5 默认是 8.2 ,请你系统实际tcl/tk版本修改 #rpm -qa | grep ^tk #rpm -qa | grep ^tcl #vi Modules/Setup.dist #_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \ #-L/usr/local/lib \ #-I/usr/local/include \ #-ltk8.5 -ltcl8.5 \ #-lX11 yum -y install tcl-devel tk-devel ./configure --enable-shared --prefix=/usr/local CFLAGS=-fPIC LDFLAGS="-Wl,-rpath /usr/local/lib" --enable-unicode=ucs4 make -j24 sudo make install cd ../ mv /usr/bin/python /usr/bin/python$py_version ln -sf /usr/local/bin/python /usr/bin/python py_version_new=`python -c "import platform;print platform.python_version()"` if [ $py_version_new == "2.7.14" ]; then sed -i "s@\#\!.*/usr/bin/python@\#\!/usr/bin/python$py_version@g" /usr/bin/yum sed -i "s@\#\!.*/usr/bin/python@\#\!/usr/bin/python$py_version@g" /usr/libexec/urlgrabber-ext-down sed -i "s@\#\!.*/usr/bin/python@\#\!/usr/bin/python$py_version@g" /usr/bin/firewall-cmd sed -i "s@\#\!.*/usr/bin/python@\#\!/usr/bin/python$py_version@g" /sbin/authconfig wget https://bootstrap.pypa.io/ez_setup.py python ez_setup.py wget https://bootstrap.pypa.io/get-pip.py python get-pip.py ln -sf /usr/local/bin/pip /usr/bin/pip ln -sf /usr/local/bin/pip /usr/bin/pip2 echo "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" >> /etc/profile echo "export PATH" >> /etc/profile source /etc/profile #pip uninstall -r requirments.txt #pip install -r requirments.txt.128 #pip install -U docker #pip install --upgrade --force-reinstall 'requests==2.18.4' urllib3 else echo "python 2.7.14 updated failed!!!" fi |
解决升级python导致的salt启动失败: centos7重新编辑安装了python2.7.14, 原来是2.7.5, 导致salt-minion启动失败。 解决: 由于之前备份了python执行文件为python2.7.5, 新的Python安装在/usr/local/目录。由于脚本误把之前版本的pip包删除了, 所以重新安装salt需要的模块: 首先更改salt执行文件: sed -i ‘s|^#!/usr/bin/python$|#!/usr/bin/python2.7.5|’ /usr/bin/salt* 如提示没有yaml块, 则安装之: wget http://pyyaml.org/download/pyyaml/PyYAML-3.12.tar.gz; tar -xvzf PyYAML-3.12.tar.gz; python2.7.5 setup.py install Read more…