1.安装依赖
apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev git curl
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
- 设置pyenv环境变量
$ cat>>.bashrc<<EOF
### pyenv settings
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init -)"
EOF
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
使配置生效
- source .bashrc
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
虚拟化命令
- 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 //删除虚拟环境
安装
- 安装3.6.0版本
- 安装2.7.13版本
pip相关命令
- pip -V //查看pip版本
python相关命令
- python -V //查看python版本
2.pyenv卸载
- rm -rf ~/.pyenv
- remove .bashrc
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
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="PYENV_ROOT/bin:(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
6.pyenv安装脚本
- 1.包含pyenv virtualenv
#!/bin/bash
check_sys() {
if [ `head -1 /etc/issue|cut -b 1-6` != "Debian" ];then
echo "your sys is not the Debian!"
exit 0
fi
}
change_vim() {
vimdir="/etc/vim/vimrc"
if [ `cat $vimdir|egrep "^set ts=4|^syntax on"|wc -l` != "2" ]; then
echo "add the vim ts syntax"
echo "set ts=4" >> $vimdir
echo "syntax on" >> $vimdir
fi
}
install_depend_lib() {
if [ `dpkg -l |egrep -w "make|build-essential|libssl-dev|zlib1g-dev|libbz2-dev|libreadline-dev|libsqlite3-dev|git|curl"|wc -l` == 10 ]; then
exit 0
else
apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev git curl >> /dev/null 2>&1
fi
}
install_pyenv() {
set -e
[ -n "$PYENV_DEBUG" ] && set -x
if [ -z "$PYENV_ROOT" ]; then
PYENV_ROOT="${HOME}/.pyenv"
fi
shell="$1"
if [ -z "$shell" ]; then
shell="$(ps c -p "$PPID" -o 'ucomm=' 2>/dev/null || true)"
shell="${shell##-}"
shell="${shell%% *}"
shell="$(basename "${shell:-$SHELL}")"
fi
colorize() {
if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
else echo -n "$2"
fi
}
checkout() {
[ -d "$2" ] || git clone --depth 1 "$1" "$2"
}
if ! command -v git 1>/dev/null 2>&1; then
echo "pyenv: Git is not installed, can't continue." >&2
exit 1
fi
if [ -n "${USE_GIT_URI}" ]; then
GITHUB="git://github.com"
else
GITHUB="https://github.com"
fi
checkout "${GITHUB}/yyuu/pyenv.git" "${PYENV_ROOT}"
checkout "${GITHUB}/yyuu/pyenv-doctor.git" "${PYENV_ROOT}/plugins/pyenv-doctor"
checkout "${GITHUB}/yyuu/pyenv-installer.git" "${PYENV_ROOT}/plugins/pyenv-installer"
checkout "${GITHUB}/yyuu/pyenv-update.git" "${PYENV_ROOT}/plugins/pyenv-update"
checkout "${GITHUB}/yyuu/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv"
checkout "${GITHUB}/yyuu/pyenv-which-ext.git" "${PYENV_ROOT}/plugins/pyenv-which-ext"
if ! command -v pyenv 1>/dev/null; then
{ echo
colorize 1 "WARNING"
echo ": seems you still have not added 'pyenv' to the load path."
echo
} >&2
case "$shell" in
bash )
profile="~/.bash_profile"
;;
zsh )g
profile="~/.zshrc"
;;
ksh )
profile="~/.profile"
;;
fish )
profile="~/.config/fish/config.fish"
;;
* )
profile="your profile"
;;
esac
{ echo "# Load pyenv automatically by adding"
echo "# the following to ${profile}:"
echo
case "$shell" in
fish )
echo "set -x PATH \"${PYENV_ROOT}/bin\" \$PATH"
echo 'status --is-interactive; and . (pyenv init -|psub)'
echo 'status --is-interactive; and . (pyenv virtualenv-init -|psub)'
;;
* )
echo "export PATH=\"${PYENV_ROOT}/bin:\$PATH\""
echo "eval \"\$(pyenv init -)\""
echo "eval \"\$(pyenv virtualenv-init -)\""
;;
esac
} >&2
fi
}
get_pyenv(){
if [ `ls -a ~ |grep ".pyenv" |wc -l` != 0 ]; then
exit 0
else
install_pyenv
fi
}
set_bashrc(){
if [ `cat ~/.bashrc |grep pyenv|wc -l` != 0 ]; then
exit 0
else
cat>>~/.bashrc<<EOF
### pyenv settings
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init -)"
eval "\$(pyenv virtualenv-init -)"
EOF
fi
#source ~/.bashrc
exec $SHELL
}
check_sys
change_vim
install_depend_lib
get_pyenv
set_bashrc
- 2.不包含pyenv virtualenv
#!/bin/bash
check_sys() {
if [ `head -1 /etc/issue|cut -b 1-6` != "Debian" ];then
if [ `head -1 /etc/issue|cut -b 1-6` != "Ubuntu" ];then
echo "your sys is not the Debian or Ubuntu!"
exit 0
fi
fi
}
change_vim() {
vimdir="/etc/vim/vimrc"
if [ `cat $vimdir|egrep "^set ts=4|^syntax on"|wc -l` != "2" ]; then
echo "add the vim ts syntax"
echo "set ts=4" >> $vimdir
echo "syntax on" >> $vimdir
fi
}
install_depend_lib() {
if [ `dpkg -l |egrep -w "make|build-essential|libssl-dev|zlib1g-dev|libbz2-dev|libreadline-dev|libsqlite3-dev|git|curl"|wc -l` == 10 ]; then
exit 0
else
apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev git curl >> /dev/null 2>&1
fi
}
get_pyenv(){
if [ `ls -a ~ |grep ".pyenv" |wc -l` != 0 ]; then
exit 0
else
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
fi
}
set_bashrc(){
if [ `cat ~/.bashrc |grep pyenv|wc -l` != 0 ]; then
exit 0
else
cat>>~/.bashrc<<EOF
### pyenv settings
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init -)"
EOF
fi
#source ~/.bashrc
exec $SHELL
}
check_sys
change_vim
install_depend_lib
get_pyenv
set_bashrc
- 3.不包含环境配置的安装脚本
#!/usr/bin/env bash
set -e
[ -n "$PYENV_DEBUG" ] && set -x
if [ -z "$PYENV_ROOT" ]; then
PYENV_ROOT="${HOME}/.pyenv"
fi
shell="$1"
if [ -z "$shell" ]; then
shell="$(ps c -p "$PPID" -o 'ucomm=' 2>/dev/null || true)"
shell="${shell##-}"
shell="${shell%% *}"
shell="$(basename "${shell:-$SHELL}")"
fi
colorize() {
if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
else echo -n "$2"
fi
}
checkout() {
[ -d "$2" ] || git clone --depth 1 "$1" "$2"
}
if ! command -v git 1>/dev/null 2>&1; then
echo "pyenv: Git is not installed, can't continue." >&2
exit 1
fi
if [ -n "${USE_GIT_URI}" ]; then
GITHUB="git://github.com"
else
GITHUB="https://github.com"
fi
checkout "${GITHUB}/yyuu/pyenv.git" "${PYENV_ROOT}"
checkout "${GITHUB}/yyuu/pyenv-doctor.git" "${PYENV_ROOT}/plugins/pyenv-doctor"
checkout "${GITHUB}/yyuu/pyenv-installer.git" "${PYENV_ROOT}/plugins/pyenv-installer"
checkout "${GITHUB}/yyuu/pyenv-update.git" "${PYENV_ROOT}/plugins/pyenv-update"
checkout "${GITHUB}/yyuu/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv"
checkout "${GITHUB}/yyuu/pyenv-which-ext.git" "${PYENV_ROOT}/plugins/pyenv-which-ext"
if ! command -v pyenv 1>/dev/null; then
{ echo
colorize 1 "WARNING"
echo ": seems you still have not added 'pyenv' to the load path."
echo
} >&2
case "$shell" in
bash )
profile="~/.bash_profile"
;;
zsh )
profile="~/.zshrc"
;;
ksh )
profile="~/.profile"
;;
fish )
profile="~/.config/fish/config.fish"
;;
* )
profile="your profile"
;;
esac
{ echo "# Load pyenv automatically by adding"
echo "# the following to ${profile}:"
echo
case "$shell" in
fish )
echo "set -x PATH \"${PYENV_ROOT}/bin\" \$PATH"
echo 'status --is-interactive; and . (pyenv init -|psub)'
echo 'status --is-interactive; and . (pyenv virtualenv-init -|psub)'
;;
* )
echo "export PATH=\"${PYENV_ROOT}/bin:\$PATH\""
echo "eval \"\$(pyenv init -)\""
echo "eval \"\$(pyenv virtualenv-init -)\""
;;
esac
} >&2
fi