python 3.7.4 shell_centos7上Virtualenv从python3.4升级到Python3.7.4

目前我的虚拟环境python版本是3.4,  想升级到最新的3.7.4, 总结步骤如下:

首先激活当前env_py3环境, 并导出当前依赖包:

Shell

workon env_py3

pip freeze > requirements.txt

1

2

workonenv_py3

pipfreeze>requirements.txt

首先安装依赖:

注意: libffi-devel必须安装, 不然编译安装会失败而导致安装不完整, 而创建虚拟环境时会报错(No module named ‘_ctypes’ )

Shell

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

1

2

yum-yinstallgccgcc-c++zlibzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel

yum-yinstalllibffi-devel

下载安装python3.7:

Shell

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

3

4

5

6

wgethttps://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz

tar-zxvfPython-3.7.4.tgz

cdPython-3.7.4/

mkdir/usr/local/python3.7

./configure--prefix=/usr/local/python3.7

make&&makeinstall

创建软链接:

Shell

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

ln-s/usr/local/python3.7/bin/python3.7/usr/bin/python3.7

ln-s/usr/local/python3.7/bin/pip3/usr/bin/pip3

配置虚拟环境:

Shell

#配置虚拟环境创建时默认用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

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

sourceactivate

#创建虚拟环境

mkvirtualenv-p/usr/local/python3.7/bin/python3env_py3

#切换到虚拟环境

workonenv_py3

#导入依赖包

pipinstall-rrequirements.txt

附: 我的系统配置文件:

.bashrc:

Shell

## 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

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

exportPIP_REQUIRE_VIRTUALENV=true#pip安装东西的时候不安装到本地环境

exportPIP_RESPECT_VIRTUALENV=true#在执行pip的时候让系统自动开启虚拟环境

exportWORKON_HOME=$HOME/.virtualenvs#所有虚拟环境存储的目录

exportPIP_VIRTUALENV_BASE=$WORKON_HOME

exportVIRTUALENV_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

exportLESS_TERMCAP_mb=$'\E[01;34m'

exportLESS_TERMCAP_md=$'\E[01;34m'

exportLESS_TERMCAP_me=$'\E[0m'

exportLESS_TERMCAP_us=$'\E[01;32m'

exportLESS_TERMCAP_ue=$'\E[0m'

exportLESS_TERMCAP_so=$'\E[01;33;44m'

exportLESS_TERMCAP_se=$'\E[0m'

TERM=xterm

exportTERM

PATH="$PATH:$HOME/bin:/usr/local/python3.7/bin"

exportPATH

旧的:升级python2.7.14:

在系统上升级python还是需要慎重, 严重的会导致系统命令不可用, 建议最好不要覆盖系统原本的/usr/bin/python文件

下面是升级脚本:

#!/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

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

exporthttps_proxy=10.x.x.x:8888

exporthttp_proxy=10.x.x.x:8888

py_version=`python-c"import platform;print platform.python_version()"`

mkdir/opt/packages

cd/opt/packages

wgethttps://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz

tar-zxvfPython-2.7.14.tgz

#pip freeze > requirments.txt

cdPython-2.7.14

#解决Python升级找不到Tkinter模块

yum-yinstalltkinter

#-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-yinstalltcl-develtk-devel

./configure--enable-shared--prefix=/usr/localCFLAGS=-fPICLDFLAGS="-Wl,-rpath /usr/local/lib"--enable-unicode=ucs4

make-j24

sudomakeinstall

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

wgethttps://bootstrap.pypa.io/ez_setup.py

pythonez_setup.py

wgethttps://bootstrap.pypa.io/get-pip.py

pythonget-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

安装相应模块:

python2.7.5 -m pip install zmq msgpack-python M2Crypto

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值