mangreen / Some-Note

Development Memo
1 stars 0 forks source link

Pyenv + pyenv-virtualenv 進行 Python 版控 #18

Open mangreen opened 7 years ago

mangreen commented 7 years ago

http://blog.xuite.net/o1o1o1o1o/blog/394405902-%E4%BD%BF%E7%94%A8Pyenv%E6%8E%A7%E5%88%B6%E5%A4%9A%E5%80%8B%E7%89%88%E6%9C%ACPython

1. 安裝 pyenv

# 安裝方法或Q&A可以去官網 (https://github.com/yyuu/pyenv) 仔細看看
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv

# 寫入路徑信息
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# 重新載入
$ source ~/.bashrc

# 更新pyenv
$ cd ~/.pyenv
$ git pull

2. 安裝多個版本Python

# 查看Pyenv可以安裝的版本列表
$ pyenv install --list

# 安裝指定版本Python

# 利用pyenv安裝的python會在~/.pyenv/versions文件夾裡。
$ pyenv install 3.4.4

# 刪除特定版本Python
$ pyenv prefix 3.4.4
$ rm -rf ~/.pyenv/versions/3.4.3

# 安裝python或是使用pip安裝python package之後,記得要更新
$ pyenv rehash

# 查看已安裝Python版本
$ pyenv versions
*   system (set by /home/clone/.pyenv/version)
    3.4.4

3. 切換Python

pyenv可以設定三種 scope,分別是 global, local 和 shell。shell 是只有當次登入 shell 有效,而 global 則是有修改系統 python 版本的效果, 我最常用的是 local,會更改當下目錄使用的 python 版本。

$ pyenv global 3.4.4    # 全局切換Python版本
$ pyenv local 3.4.4     # 在當前目錄創建一個.python-version,以後進入這個目錄自動切換為該版本
$ pyenv shell 3.4.4     # 在當前Shell session裡啓用某個Python版本,優先級高於global, local

4. 使用pyenv-virtualenv

# 官網 (https://github.com/yyuu/pyenv-virtualenv)
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

5. 使用與切換新的python虛擬環境

# 建立一個新的虛擬環境
$ pyenv virtualenv 3.4.4 env344
# 這條命令在本機上創建了一個名為env344的python虛擬環境,這個環境的真實目錄位於:~/.pyenv/versions/
# 注意,命令中的 ‘3.4.4’ 必須是一個安裝前面步驟已經安裝好的python版本, 否則會出錯。

# 然後我們可以繼續通過 ‘pyenv versions’ 命令來查看當前的虛擬環境。
$ pyenv versions
*   system (set by /home/clone/.pyenv/version)
    3.4.4
    3.4.4/envs/env344
    env344

# 記住下列指令
$ pyenv activate env344     # 使用 env344 這個環境, 此時 Python 版本自動變為 3.4.4, 且是獨立環境
$ pyenv deactivate          # 離開這個環境

# 刪除
$ pyenv uninstall env271    # or $ rm -rf ~/.pyenv/versions/env344/