Pyenv管理Python多版本環(huán)境

本文地址:http://www.itdecent.cn/p/ab3b3811d32b

一、簡(jiǎn)介

在配置Python環(huán)境的時(shí)候,我們常常會(huì)遇到環(huán)境沖突的問(wèn)題,特別是在多個(gè)Python版本的時(shí)候。例如Linux系統(tǒng)基本都會(huì)自帶一個(gè)Python2.7,這個(gè)Python是Linux本身需要使用的,所以我們一般不會(huì)去使用這個(gè)Python,而是自己安裝一個(gè),這個(gè)時(shí)候就常常遇到?jīng)_突的問(wèn)題。

當(dāng)然,如果熟悉Python的配置的話,是不會(huì)遇到這個(gè)問(wèn)題的,但如果需要配置多個(gè)Python版本,且之間不互相影響的話,還是非常的麻煩。

所幸現(xiàn)在有幾個(gè)比較完善的工具,可以幫助我們非常方便的一條龍搭建Python環(huán)境,本篇文章講解的則是如何使用 Pyenv 來(lái)搭建Python環(huán)境,這是作者目前非常喜歡使用的一種方式。Pyenv 是一個(gè)Python版本管理工具,可以讓你輕松的安裝多個(gè)版本的Python,并且在Python的各個(gè)版本之間簡(jiǎn)單快速的切換,非常簡(jiǎn)單實(shí)用。


二、安裝配置

2.1. Linux安裝Pyenv

在安裝Pyenv之前,我們需要先把Python的依賴項(xiàng)裝好,如下所示:

sudo apt-get install gcc libbz2-dev libncurses5-dev  libgdbm-dev liblzma-dev libsqlite3-dev libssl-dev libreadline6-dev

然后就可以使用GIT從Github上下載下載Pyenv的源碼了,Pyenv不需要編譯等操作,下載下來(lái)之后放到某一個(gè)位置即可,如下所示:

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

在這里是把Pyenv下載下來(lái)后,放到了 ~ 家目錄下,起名為 .pyenv 的隱藏目錄中。這只是一個(gè)官方比較推薦的位置,實(shí)際上你可以自行選擇把你的 .pyenv 目錄放到任何位置。

在下載完畢之后,還需要配置一下Pyenv的環(huán)境變量以及Pyenv啟動(dòng)的語(yǔ)句:

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

如果你是使用的 zsh,那么需要把 ~/.bashrc 修改為 ~/.zshenv,按照系統(tǒng)的不同,可能還需要修改為 ~/.bash_profile

如果你修改了 .pyenv 的位置,那么你還要將上面命令中的對(duì)應(yīng)路徑進(jìn)行修改。

配置完畢之后重啟 shell 即可生效:

exec "$SHELL"

2.2. Mac安裝Pyenv

如果你是使用的Mac系統(tǒng),那么官方推薦的安裝方式是使用Homebrew來(lái)進(jìn)行安裝,Homebrew的使用方式請(qǐng)自行搜索。

使用Homebrew安裝非常的簡(jiǎn)單,一行代碼即可,Homebrew會(huì)自動(dòng)下載依賴項(xiàng):

brew install pyenv

安裝完畢之后會(huì)有提示你將pyenv init添加到Shell中,輸入以下命令即可:

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

之后重啟終端就可以使用了。

:如果使用的是Mac os最近的10.14版本,那么使用 Pyenv 安裝Python時(shí),可能會(huì)遇到 zlib 的報(bào)錯(cuò),這種情況使用Homebrew把 zli?b 安裝好,并根據(jù)安裝好之后的提示,將其添加到編譯環(huán)境中即可。


三、使用方式

配置完畢之后,就可以在命令行中使用 Pyenv 命令了,加上 -h 參數(shù)可以查看幫助和使用方式:

$ pyenv -h
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme

在這里我們講解一下比較常用的一些命令的使用方式。

3.1. 查看和安裝Python

需要注意的一點(diǎn)是,Pyenv 僅能夠管理由 Pyenv 自己安裝的Python,也就是說(shuō)如果你使用編譯或其他方式安裝的Python版本,將不會(huì)納入 Pyenv 的管理。

首先,我們來(lái)查看使用 Pyenv 能安裝什么版本的Python:

$ pyenv install --list

使用此命令即可查看 Pyenv 能安裝的所有版本,包括官方的Python、anaconda、pypy等。在這里,只有數(shù)字的,如 3.6.6 這種就是官方版本的Python。

選擇好你要安裝的Python版本之后,使用以下命令即可安裝:

$ pyenv install 3.6.6

版本名字需要和上一條命令中查詢到的一致。

依賴項(xiàng)這些都沒(méi)有問(wèn)題的話,一般輸入命令等待安裝成功即可,安裝完成后,我們可以使用以下命令來(lái)查看納入 Pyenv 安裝的有哪些版本:

$ pyenv versions
* system (set by /Users/wnanbei/.pyenv/version)
  3.6.6
  3.7.1

這里的 system 則是系統(tǒng)本身的Python環(huán)境,而下方的 3.6.63.7.1 則是使用 Pyenv 安裝的,帶 * 的則是當(dāng)前正在使用的Python環(huán)境。


3.2. 切換Python環(huán)境

安裝了多個(gè)Python版本之后,使用 Pyenv 可以非??焖俦憬莸脑诙鄠€(gè)Python版本中切換,而不會(huì)造成沖突。其設(shè)定Python環(huán)境的方式也有幾種。

  1. 全局Python環(huán)境

    指定全局的Python環(huán)境一般用的比較少,如果你嫌每次都要用命令進(jìn)入環(huán)境比較麻煩的話,那么你可以指定一個(gè)比較常用的Python版本作為全局的Python環(huán)境:

    $ pyenv global 3.6.6
    
  2. 局部Python環(huán)境

    除了全局環(huán)境之外,還可以給某個(gè)目錄指定環(huán)境,也就是說(shuō),只要進(jìn)入這個(gè)指定之后的目錄,那么其所處的環(huán)境就是指定的Python版本了。

    指定之前,首先要使用 cd 命令進(jìn)入要指定的目錄,然后輸入以下命令。

    $ pyenv local 3.6.6
    

    如果要取消某個(gè)目錄的Python環(huán)境,可以使用以下命令:

    $ pyenv local --unset
    
  3. 臨時(shí)Python環(huán)境

    所謂的臨時(shí)Python環(huán)境,與上面的全局和局部環(huán)境不同,只是當(dāng)前有效,退出Shell之后,下次再進(jìn)入還需要重新切換。輸入以下命令進(jìn)入臨時(shí)Python環(huán)境:

    $ pyenv shell 3.6.6
    

    如果需要退出臨時(shí)環(huán)境的話,使用以下命令:

    $ pyenv shell --unset
    

這三種Python環(huán)境的優(yōu)先級(jí)為:shell > local > global

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容