pyenv,是用來管理電腦不同版本的python的一個管理工具,切換不同版本不會影響到系統自帶的python。
pyenv,是一個開源軟件,具體可以猛戳這里:https://github.com/yyuu/pyenv
安裝就不說了,可以看項目使用說明,我說說我遇到的問題。
我按照說明做,當我執行:
$pyenv install3.4.2
pyenv安裝信息如下
Downloading Python-3.4.2.tgz...-> https://yyuu.github.io/pythons/44a3c1ef1c7ca3e4fd25242af80ed72da941203cb4ed1a8c1b724d9078965dd8error: failed to download Python-3.4.2.tgz-> https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgzInstalling Python-3.4.2...ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?Please consult to the Wiki page to fix the problem.https://github.com/yyuu/pyenv/wiki/Common-build-problemsBUILD FAILED (OS X10.9.5using python-build20150124)Inspect or clean up the working tree at /var/folders/zf/1b6kcyd53hg0crv65j108_7m0000gn/T/python-build.20150127145029.76064Results logged to /var/folders/zf/1b6kcyd53hg0crv65j108_7m0000gn/T/python-build.20150127145029.76064.logLast10loglines:(cd/Users/karonchen/.pyenv/versions/3.4.2/share/man/man1; ln-spython3.4.1python3.1)iftest"xupgrade"!="xno";then\caseupgradein\? ? ? ? ? ? upgrade) ensurepip="--upgrade";; \? ? ? ? ? ? install|*) ensurepip="";; \esac; \? ? ? ? ./python.exe -E -m ensurepip \$ensurepip--root=/ ; \fiIgnoring ensurepip failure: pip1.5.6requires SSL/TLS
原因:
ERROR:The Python ssl extension was not compiled. Missing the OpenSSL lib?
所以,執行下面的代碼可以解決這個問題:
CFLAGS="-I$(brew --prefix openssl)/include"\LDFLAGS="-L$(brew --prefix openssl)/lib"\pyenv install3.4.2
詳情可以看著里:https://github.com/yyuu/pyenv/issues/22
pyenv安裝反饋如下:
Downloading Python-3.4.2.tgz...->https://yyuu.github.io/pythons/44a3c1ef1c7ca3e4fd25242af80ed72da941203cb4ed1a8c1b724d9078965dd8Installing Python-3.4.2...BUILD FAILED (OS X10.9.5 using python-build20150124)Inspectorclean up the working tree at /var/folders/zf/1b6kcyd53hg0crv65j108_7m0000gn/T/python-build.20150127150918.87726Results logged to /var/folders/zf/1b6kcyd53hg0crv65j108_7m0000gn/T/python-build.20150127150918.87726.logLast10loglines:? File"/private/var/folders/zf/1b6kcyd53hg0crv65j108_7m0000gn/T/python-build.20150127150918.87726/Python-3.4.2/Lib/ensurepip/__main__.py", line4,in? ? ensurepip._main()? File"/private/var/folders/zf/1b6kcyd53hg0crv65j108_7m0000gn/T/python-build.20150127150918.87726/Python-3.4.2/Lib/ensurepip/__init__.py", line209,in_main? ? default_pip=args.default_pip,? File"/private/var/folders/zf/1b6kcyd53hg0crv65j108_7m0000gn/T/python-build.20150127150918.87726/Python-3.4.2/Lib/ensurepip/__init__.py", line116,inbootstrap? ? _run_pip(args + [p[0]forpin_PROJECTS], additional_paths)? File"/private/var/folders/zf/1b6kcyd53hg0crv65j108_7m0000gn/T/python-build.20150127150918.87726/Python-3.4.2/Lib/ensurepip/__init__.py", line40,in_run_pipimportpipzipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
原因:
zipimport.ZipImportError:can't decompress data; zlib not available
執行下面的代碼即可解決這個問題:
CFLAGS="-I$(xcrun --show-sdk-path)/usr/include"pyenv install -v3.4.2
詳情可以看著里:https://github.com/yyuu/pyenv/issues/25
以為這樣就搞定了。。。可是:
當我在shell中輸入
pyenv local3.4.2#設置機子使用的python為3.4.2版本$python --version$2.7.8
發現python還是之前的版本,這又是哪里出問題。
查了半天,發現是shell configuration沒配置。具體可以參考這里:https://github.com/yyuu/pyenv/issues/228
需要在.bash_profile的最下面加入:
if whichpyenv > /dev/null;theneval"$(pyenv init -)";fi
and it worked!!