pyenv¶
pyenv可以帮助你在一台开发机上建立多个版本的python环境, 并提供方便的切换方法。 virtualenv可以搭建虚拟且独立的python环境,可以使每个项目环境与其他项目独立开来, 保持环境的干净,解决包冲突问题。
安装¶
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
# restart shell
exec "$SHELL"
安装 python 版本¶
# 安装 python 版本
pyenv install 2.7.10
# centos 需要安装如下包
yum install patch openssl-devel -y
pyenv-virtualenv 安装¶
光有pyenv还不够,我们需要结合virtualenv来使用, pyenv-virtualenv就是干这个活的。
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
# restart shell
exec "$SHELL"
使用¶
# 查看支持哪些版本
pyenv install -l
# 创建项目
pyenv virtualenv 2.7.10 project
# Activate virtualenv
pyenv activate project
# Deactive virtualenv
pyenv deactivate
# Delete existing virtualenv
pyenv uninstall project
# 查看已经安装了哪些 virtualenv
pyenv versions
FAQ¶
/root/.pyenv/plugins/python-build/bin/python-build: line 1326: patch: command not found
yum install patch -y
mac os zlib 问题
现象如下:
Last 10 log lines: File "/private/var/folders/qq/cxqjcr296h7bvhl4nqbzrsn00000gn/T/python-build.20190419143439.41015/Python-3.5.3/Lib/ensurepip/__main__.py", line 4, in <module> ensurepip._main() File "/private/var/folders/qq/cxqjcr296h7bvhl4nqbzrsn00000gn/T/python-build.20190419143439.41015/Python-3.5.3/Lib/ensurepip/__init__.py", line 209, in _main default_pip=args.default_pip, File "/private/var/folders/qq/cxqjcr296h7bvhl4nqbzrsn00000gn/T/python-build.20190419143439.41015/Python-3.5.3/Lib/ensurepip/__init__.py", line 116, in bootstrap _run_pip(args + [p[0] for p in _PROJECTS], additional_paths) File "/private/var/folders/qq/cxqjcr296h7bvhl4nqbzrsn00000gn/T/python-build.20190419143439.41015/Python-3.5.3/Lib/ensurepip/__init__.py", line 40, in _run_pip import pip zipimport.ZipImportError: can't decompress data; zlib not available
解决办法:
brew install zlib export LDFLAGS="-L/usr/local/opt/zlib/lib" export CPPFLAGS="-I/usr/local/opt/zlib/include" export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig"