roach57
Python,Linux,运维自动化,Shell

导航

 
1.安装依赖
  1. apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev git curl

  2. git clone https://github.com/yyuu/pyenv.git ~/.pyenv

  3. 设置pyenv环境变量
  1. $ cat>>.bashrc<<EOF
  2. ### pyenv settings
  3. export PYENV_ROOT="\$HOME/.pyenv"
  4. export PATH="\$PYENV_ROOT/bin:\$PATH"
  5. eval "\$(pyenv init -)"
  6. EOF
  1. export PYENV_ROOT="$HOME/.pyenv"
  2. export PATH="$PYENV_ROOT/bin:$PATH"
  3. eval "$(pyenv init -)"
  1. 使配置生效

    • source .bashrc
  2. pyenv命令信息
    基本命令

    • pyenv versions //查看所有版本信息
    • pyenv version //查看当前版本的信息
    • pyenv install –list //查看可安装的版本:
    • pyenv install -v 2.7.1 //可视化安装
    • pyenv install 2.7.1 //静默安装
    • pyenv uninstall 2.7.1 //卸载
    • pyenv rehash //更新清单列表
    • pyenv which python //显示当前python的安装路径
    • pyenv global //设置全局默认python版本
    • pyenv local //设置当前路径所使用的python版本
    • pyenv shell //在当前shell的session中启用摸个python版本,优先级别高于global和local
  3. 虚拟化命令

    • pyenv virtualenv 3.6.0 roachenv-3.6.0 //安装虚拟环境
    • pyenv activate roachenv-3.6.0 //激活虚拟环境
    • pyenv deactivate roachenv-3.6.0 //停用虚拟环境
    • pyenv uninstall roachenv-3.6.0 //删除虚拟环境
  4. 安装

    • 安装3.6.0版本
    • 安装2.7.13版本
  5. pip相关命令

    • pip -V //查看pip版本
  6. python相关命令

    • python -V //查看python版本

2.pyenv卸载

  1. rm -rf ~/.pyenv
  2. remove .bashrc
  1. export PATH="~/.pyenv/bin:$PATH"
  2. eval "$(pyenv init -)"
  3. eval "$(pyenv virtualenv-init -)"

3.pyenv命令集

  • https://github.com/yyuu/pyenv/blob/master/COMMANDS.md

4.pyenv进行本地安装[预防网络安装失败问题]:

  • http://blog.csdn.net/windeal3203/article/details/53413479
  • 找到pyenv路径:
    ~/.pyenv
  • python-build位置:
    /root/.pyenv/plugins/python-build/share/python-build
  • 查看版本安装指令:
    cat x.x.x
    找到 install_package "Python-x.x.x" "https://"
    替换成 install_package "Python-x.x.x" "/usr/opt/pyenv/"

5.权限配置

  • adduser wuqiang
  • cp /root/.pyenv /home/wuqiang/ -p -r
  • chown wuqiang:wuqiang /home/wuqiang/.pyenv -R
  • mkdir /opt/python-wuqiang
  • chown wuqiang:wuqiang /opt/python-wuqiang
  • chmod 750 /opt/python-wuqiang

  • su - wuqiang

  • pyenv virtualenv 3.6.0 wuqiang-3.6.0
  • pyenv virtualenv system wuqiang-2.7.12
  • cd /opt/python-wuqiang
  • pyenv local wuqiang-3.6.0

    在这两个文件的末尾添加以下内容:
    vim /home/.profile
    vim /home/.bashrc
    export PYENV_ROOT="HOME/.pyenv"exportPATH="PYENV_ROOT/bin:PATH"eval"(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"

6.pyenv安装脚本

  • 1.包含pyenv virtualenv
  1. #!/bin/bash
  2. check_sys() {
  3. if [ `head -1 /etc/issue|cut -b 1-6` != "Debian" ];then
  4. echo "your sys is not the Debian!"
  5. exit 0
  6. fi
  7. }
  8. change_vim() {
  9. vimdir="/etc/vim/vimrc"
  10. if [ `cat $vimdir|egrep "^set ts=4|^syntax on"|wc -l` != "2" ]; then
  11. echo "add the vim ts syntax"
  12. echo "set ts=4" >> $vimdir
  13. echo "syntax on" >> $vimdir
  14. fi
  15. }
  16. install_depend_lib() {
  17. if [ `dpkg -l |egrep -w "make|build-essential|libssl-dev|zlib1g-dev|libbz2-dev|libreadline-dev|libsqlite3-dev|git|curl"|wc -l` == 10 ]; then
  18. exit 0
  19. else
  20. apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev git curl >> /dev/null 2>&1
  21. fi
  22. }
  23. install_pyenv() {
  24. set -e
  25. [ -n "$PYENV_DEBUG" ] && set -x
  26. if [ -z "$PYENV_ROOT" ]; then
  27. PYENV_ROOT="${HOME}/.pyenv"
  28. fi
  29. shell="$1"
  30. if [ -z "$shell" ]; then
  31. shell="$(ps c -p "$PPID" -o 'ucomm=' 2>/dev/null || true)"
  32. shell="${shell##-}"
  33. shell="${shell%% *}"
  34. shell="$(basename "${shell:-$SHELL}")"
  35. fi
  36. colorize() {
  37. if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
  38. else echo -n "$2"
  39. fi
  40. }
  41. checkout() {
  42. [ -d "$2" ] || git clone --depth 1 "$1" "$2"
  43. }
  44. if ! command -v git 1>/dev/null 2>&1; then
  45. echo "pyenv: Git is not installed, can't continue." >&2
  46. exit 1
  47. fi
  48. if [ -n "${USE_GIT_URI}" ]; then
  49. GITHUB="git://github.com"
  50. else
  51. GITHUB="https://github.com"
  52. fi
  53. checkout "${GITHUB}/yyuu/pyenv.git" "${PYENV_ROOT}"
  54. checkout "${GITHUB}/yyuu/pyenv-doctor.git" "${PYENV_ROOT}/plugins/pyenv-doctor"
  55. checkout "${GITHUB}/yyuu/pyenv-installer.git" "${PYENV_ROOT}/plugins/pyenv-installer"
  56. checkout "${GITHUB}/yyuu/pyenv-update.git" "${PYENV_ROOT}/plugins/pyenv-update"
  57. checkout "${GITHUB}/yyuu/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv"
  58. checkout "${GITHUB}/yyuu/pyenv-which-ext.git" "${PYENV_ROOT}/plugins/pyenv-which-ext"
  59. if ! command -v pyenv 1>/dev/null; then
  60. { echo
  61. colorize 1 "WARNING"
  62. echo ": seems you still have not added 'pyenv' to the load path."
  63. echo
  64. } >&2
  65. case "$shell" in
  66. bash )
  67. profile="~/.bash_profile"
  68. ;;
  69. zsh )g
  70. profile="~/.zshrc"
  71. ;;
  72. ksh )
  73. profile="~/.profile"
  74. ;;
  75. fish )
  76. profile="~/.config/fish/config.fish"
  77. ;;
  78. * )
  79. profile="your profile"
  80. ;;
  81. esac
  82. { echo "# Load pyenv automatically by adding"
  83. echo "# the following to ${profile}:"
  84. echo
  85. case "$shell" in
  86. fish )
  87. echo "set -x PATH \"${PYENV_ROOT}/bin\" \$PATH"
  88. echo 'status --is-interactive; and . (pyenv init -|psub)'
  89. echo 'status --is-interactive; and . (pyenv virtualenv-init -|psub)'
  90. ;;
  91. * )
  92. echo "export PATH=\"${PYENV_ROOT}/bin:\$PATH\""
  93. echo "eval \"\$(pyenv init -)\""
  94. echo "eval \"\$(pyenv virtualenv-init -)\""
  95. ;;
  96. esac
  97. } >&2
  98. fi
  99. }
  100. get_pyenv(){
  101. if [ `ls -a ~ |grep ".pyenv" |wc -l` != 0 ]; then
  102. exit 0
  103. else
  104. install_pyenv
  105. fi
  106. }
  107. set_bashrc(){
  108. if [ `cat ~/.bashrc |grep pyenv|wc -l` != 0 ]; then
  109. exit 0
  110. else
  111. cat>>~/.bashrc<<EOF
  112. ### pyenv settings
  113. export PYENV_ROOT="\$HOME/.pyenv"
  114. export PATH="\$PYENV_ROOT/bin:\$PATH"
  115. eval "\$(pyenv init -)"
  116. eval "\$(pyenv virtualenv-init -)"
  117. EOF
  118. fi
  119. #source ~/.bashrc
  120. exec $SHELL
  121. }
  122. check_sys
  123. change_vim
  124. install_depend_lib
  125. get_pyenv
  126. set_bashrc
  • 2.不包含pyenv virtualenv
  1. #!/bin/bash
  2. check_sys() {
  3. if [ `head -1 /etc/issue|cut -b 1-6` != "Debian" ];then
  4. if [ `head -1 /etc/issue|cut -b 1-6` != "Ubuntu" ];then
  5. echo "your sys is not the Debian or Ubuntu!"
  6. exit 0
  7. fi
  8. fi
  9. }
  10. change_vim() {
  11. vimdir="/etc/vim/vimrc"
  12. if [ `cat $vimdir|egrep "^set ts=4|^syntax on"|wc -l` != "2" ]; then
  13. echo "add the vim ts syntax"
  14. echo "set ts=4" >> $vimdir
  15. echo "syntax on" >> $vimdir
  16. fi
  17. }
  18. install_depend_lib() {
  19. if [ `dpkg -l |egrep -w "make|build-essential|libssl-dev|zlib1g-dev|libbz2-dev|libreadline-dev|libsqlite3-dev|git|curl"|wc -l` == 10 ]; then
  20. exit 0
  21. else
  22. apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev git curl >> /dev/null 2>&1
  23. fi
  24. }
  25. get_pyenv(){
  26. if [ `ls -a ~ |grep ".pyenv" |wc -l` != 0 ]; then
  27. exit 0
  28. else
  29. git clone https://github.com/yyuu/pyenv.git ~/.pyenv
  30. fi
  31. }
  32. set_bashrc(){
  33. if [ `cat ~/.bashrc |grep pyenv|wc -l` != 0 ]; then
  34. exit 0
  35. else
  36. cat>>~/.bashrc<<EOF
  37. ### pyenv settings
  38. export PYENV_ROOT="\$HOME/.pyenv"
  39. export PATH="\$PYENV_ROOT/bin:\$PATH"
  40. eval "\$(pyenv init -)"
  41. EOF
  42. fi
  43. #source ~/.bashrc
  44. exec $SHELL
  45. }
  46. check_sys
  47. change_vim
  48. install_depend_lib
  49. get_pyenv
  50. set_bashrc
  • 3.不包含环境配置的安装脚本
  1. #!/usr/bin/env bash
  2. set -e
  3. [ -n "$PYENV_DEBUG" ] && set -x
  4. if [ -z "$PYENV_ROOT" ]; then
  5. PYENV_ROOT="${HOME}/.pyenv"
  6. fi
  7. shell="$1"
  8. if [ -z "$shell" ]; then
  9. shell="$(ps c -p "$PPID" -o 'ucomm=' 2>/dev/null || true)"
  10. shell="${shell##-}"
  11. shell="${shell%% *}"
  12. shell="$(basename "${shell:-$SHELL}")"
  13. fi
  14. colorize() {
  15. if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
  16. else echo -n "$2"
  17. fi
  18. }
  19. checkout() {
  20. [ -d "$2" ] || git clone --depth 1 "$1" "$2"
  21. }
  22. if ! command -v git 1>/dev/null 2>&1; then
  23. echo "pyenv: Git is not installed, can't continue." >&2
  24. exit 1
  25. fi
  26. if [ -n "${USE_GIT_URI}" ]; then
  27. GITHUB="git://github.com"
  28. else
  29. GITHUB="https://github.com"
  30. fi
  31. checkout "${GITHUB}/yyuu/pyenv.git" "${PYENV_ROOT}"
  32. checkout "${GITHUB}/yyuu/pyenv-doctor.git" "${PYENV_ROOT}/plugins/pyenv-doctor"
  33. checkout "${GITHUB}/yyuu/pyenv-installer.git" "${PYENV_ROOT}/plugins/pyenv-installer"
  34. checkout "${GITHUB}/yyuu/pyenv-update.git" "${PYENV_ROOT}/plugins/pyenv-update"
  35. checkout "${GITHUB}/yyuu/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv"
  36. checkout "${GITHUB}/yyuu/pyenv-which-ext.git" "${PYENV_ROOT}/plugins/pyenv-which-ext"
  37. if ! command -v pyenv 1>/dev/null; then
  38. { echo
  39. colorize 1 "WARNING"
  40. echo ": seems you still have not added 'pyenv' to the load path."
  41. echo
  42. } >&2
  43. case "$shell" in
  44. bash )
  45. profile="~/.bash_profile"
  46. ;;
  47. zsh )
  48. profile="~/.zshrc"
  49. ;;
  50. ksh )
  51. profile="~/.profile"
  52. ;;
  53. fish )
  54. profile="~/.config/fish/config.fish"
  55. ;;
  56. * )
  57. profile="your profile"
  58. ;;
  59. esac
  60. { echo "# Load pyenv automatically by adding"
  61. echo "# the following to ${profile}:"
  62. echo
  63. case "$shell" in
  64. fish )
  65. echo "set -x PATH \"${PYENV_ROOT}/bin\" \$PATH"
  66. echo 'status --is-interactive; and . (pyenv init -|psub)'
  67. echo 'status --is-interactive; and . (pyenv virtualenv-init -|psub)'
  68. ;;
  69. * )
  70. echo "export PATH=\"${PYENV_ROOT}/bin:\$PATH\""
  71. echo "eval \"\$(pyenv init -)\""
  72. echo "eval \"\$(pyenv virtualenv-init -)\""
  73. ;;
  74. esac
  75. } >&2
  76. fi




posted on 2017-04-20 15:43  roach57  阅读(785)  评论(0编辑  收藏  举报