使用pyenv可以很方便的切換python版本,而不會影響系統的python版本,對需要使用supervisor(僅支持python2)托管程序,項目使用python3開發的情況十分有用
pyenv的一些認識
- pyenv通過在系統路徑PATH前添加shims目錄來工作
ubuntu@VM-0-9-ubuntu:/srv/www/trader-log-gallery$ echo $PATH
/home/ubuntu/bin:/home/ubuntu/.local/bin:/home/ubuntu/.pyenv/shims:/home/ubuntu/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
這樣系統因為先找到pyenv預先shim到PATH前的路徑,而執行pyenv安裝的python,pip。
- 當我們使用pyenv local python-version 為當前目錄指定python版本時,會在當前目錄下生成一個.python-version的文件。
- pyenv將不同的python安裝在 $(pyenv root)/versions/下
ubuntu@VM-0-9-ubuntu:/srv/www/trader-log-gallery$ ls ~/.pyenv/versions/ -l
total 8
drwxr-xr-x 6 ubuntu ubuntu 4096 Oct 17 17:42 2.7.12
drwxr-xr-x 6 ubuntu ubuntu 4096 Oct 22 16:13 3.6.6
pyenv的安裝更新,ubuntu將bash_profile替換成bash_profile
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev
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
exec "$SHELL"
使用pyenv安裝python
- 查看可用的python版本號pyenv versions
- 安裝指定版本的python,pyenv install 3.6.6
- 將某個版本設置為全局可用python global 3.6.6
- 設置當前目錄的python版本python local 3.6.6