MAC下pyenv和pyenv-virtualenv插件初探


為什么會使用pyenv和pyenv-virtualenv插件

一般mac自帶一個python版本,稱為系統版本。對於開發者而言,肯定不夠用啦。所以需要在同一個mac上組建不同的開發環境並且不會沖突。

pyenv使你可以在不同python版本之間輕松切換。它簡單,低調,並且遵守UNIX的傳統:single-purpose tools that do one thing well。

pyenv是基於rbenv和ruby-build項目,對python做了定制修改。

pyenv是第三方的,開源的多版本的Python管理工具,同時支持Python2和Python3.

pyenv-virtualenv插件是虛擬出同一版本的python但是不同依賴庫版本的開發環境。這對於在同一台電腦上開發不同項目非常方便。

等等,難道官方沒有類似的工具嗎?

是有的,在Python3.3標准庫中有一個venv模塊就是干這個活的,但是,Python3.3之前的版本都不好用,鑒於現在很多項目是基於Python2.x的,所以......

等等,似乎我還聽說過virtualenv的東西也有類似的功能?

virtualenv同時支持Python2和Python3,非常流行。它創建的虛擬環境可以指定Python解釋器,並選擇不繼承基礎版本的包。

那我還是用virtualenv吧。

是可以的,下面聊聊如何安裝pyenv及其pyenv-virtualenv插件。

安裝pyenv

通用版

1.clone一個pyenv項目

 $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

2.定義環境變量

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

對於zsh,使用~/.zshenv替換~/.bash_profile

對於Ubuntu和Fedora,~/.bashrc用替換~/.bash_profile

如果zsh和bash切換着用,那么./zshrc和./bashrc都要改,不然會出現找不到命令的報錯

3.增加pyenv init到shell

$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

對於zsh,使用~/.zshenv替換~/.bash_profile

對於Ubuntu和Fedora,~/.bashrc用替換~/.bash_profile

如果zsh和bash切換着用,那么./zshrc和./bashrc都要改,不然會出現找不到命令的報錯

4.重啟shell

$ exec "$SHELL"

Mac版

1.用homebrew安裝

$ brew update
$ brew install pyenv

2.按照通用版第3步開始安裝

 

安裝pyenv-virtualenv插件

通用版

1.clone一個pyenv項目

$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

2.定義環境變量

$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

對於zsh,使用~/.zshenv替換~/.bash_profile

對於Ubuntu和Fedora,~/.bashrc用替換~/.bash_profile

如果zsh和bash切換着用,那么./zshrc和./bashrc都要改,不然會出現找不到命令的報錯

3.重啟shell

$ exec "$SHELL"

Mac版

1.用homebrew安裝

$ brew install pyenv-virtualenv

2.同上第2步開始做

卸載 pyenv

# 通用
rm
-rf $(pyenv root)
# Mac brew uninstall pyenv

 

安裝並使用python版本

1.查看可用的版本

$ pyenv  install --list

2.選擇安裝一個,如

$ pyenv install  3.6.2

小技巧: 執行上面命令后,會從給定的網址中下載安裝文件Python-3.6.2.tar.xz。但由於文件很大,下載需要很久。建議做法是:先執行以上命令然后馬上中斷安裝,這樣就知道 pyenv 要下載的文件的鏈接。然后用戶自己用其他更快的方式(比如wget、迅雷等等)從該鏈接中下載安裝文件並將安裝文件移動到 ~/.pyenv/cache 目錄下(該目錄默認不存在,用戶要自行新建),再執行上面的命令。編譯安裝本身也需要較長時間。默認安裝路徑是~/.pyenv/versions/3.6.2/

如果安裝報錯:

BUILD FAILED (Ubuntu 16.04 using python-build 1.1.3-21-g005a2e8)

解決方法如下:

  • Ubuntu/Debian:
    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
  • Fedora/CentOS/RHEL:
    dnf install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
  • Mac OS X:
    brew install readline xz

     

3.查看版本

$ pyenv versions  (查看所有版本)
* system (set by /root/.pyenv/version)
  2.7.13
  3.6.2
$ pyenv version   (version 查看當前版本)
system (set by /root/.pyenv/version)

system 代表當前系統的python 版本

*表示當前的python版本, 可以看到, 我們還在使用的是默認的system 自帶的python版本

4.切換python默認版本

$ pyenv global 3.6.2
$ pyenv versions
  system
  2.7.1
* 3.6.2 (set by /root/.pyenv/version)

5.創建一個3.6.2的虛擬環境

$ pyenv virtualenv 3.6.2 env362

這條命令在本機上創建了一個名為env362的python虛擬環境,這個環境的真實目錄位於:~/.pyenv/versions/

再次輸入

$ pyenv versions

如圖 

env362是3.6.2/envs/env362的軟連接

3.6.2是官方版本

5.使用3.6.2的虛擬環境

$ pyenv activate env362

如圖所示

下面基本上你就可以在這個虛擬環境里面為所欲為了,再也不用擔心系統路徑被搞亂的問題了。

6.關閉3.6.2的虛擬環境

$ pyenv deactivate

7.卸載3.6.2的虛擬環境

$ pyenv uninstall env362

 

在pycharm中使用虛擬環境

打開pycharm選擇Preferences|Project interpreter|showall就可以選擇了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM