1. 程式人生 > 其它 >如何在一臺電腦上管理多個版本的Python?

如何在一臺電腦上管理多個版本的Python?

技術標籤:# Python基礎pyenvpython

文章目錄


如何在同一個電腦上安裝多個版本的Python並輕鬆管理、切換?

pyenv輕鬆搞定。

安裝pyenv

Mac

brew update
brew install pyenv

Windows

Windows系統的安裝略微複雜。

1、使用以下任意一種方法來獲取pyenv-win

  • 使用pip
# powershell或者git bash使用以下命令
pip install pyenv-win --target "$HOME\.pyenv"

# cmd使用以下命令
pip install pyenv-win --target "%USERPROFILE%\.pyenv"
  • 使用zip檔案
    • 下載pyenv-win壓縮包: 下載連結
    • 在根目錄($HOME%USERPFOFILE%)下建立一個.pyenv目錄
    • 解壓該檔案然後將其移至上一步所建目錄下
    • 確保你在%USERPFILE%\.pyenv\pyenv-win下能看到bin目錄
  • 使用git
    • powershell或git bash: git clone https://github.com/pyenv-win/pyenv-win.git "$HOME/.pyenv"
    • cmd: git clone https://github.com/pyenv-win/pyenv-win.git "%USERPROFILE%\.pyenv"
  • 使用Chocolatey
    • choco install pyenv-win

2、完成安裝
如果使用Chocolatey,則直接跳至第三步即可

  • 1.新增PYENV、PYENV_HOME到環境變數:powershell下執行
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
  • 2.新增以下paths到PATH變數:powershell下執行
[System.Environment]::SetEnvironmentVariable('path', $HOME + "\.pyenv\pyenv-win\bin;" + $HOME + "\.pyenv\pyenv-win\shims;" + $env:Path,"User")
  • 3.重啟終端並執行pyenv --version,可看到
$ pyenv --version 
pyenv 1.2.21
  • 4.在home目錄下執行 pyenv rehash

Linux

cd ~
mkdir .pyenv
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

pyenv使用

下面列舉出pyenv最常用的子命令

pyenv commands

列出所有可用的pyenv命令

pyenv local

通過將python版本名寫在當前目錄的.python-version檔案內來設定本地應用程式的python版本。這個版本會覆蓋全域性版本,並且可以通過設定PYENV_VERSION環境變數或使用pyenv shell命令來覆蓋。

  • 將當前目錄切換至3.9.0版本的python:pyenv local 3.9.0

  • 顯示當前目錄使用的python版本:pyenv local

  • 取消設定當前目錄的python版本:pyenv local --unset

  • 設定多個本地版本:

$ pyenv local 2.7.6 3.3.3
$ pyenv versions
  system
* 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
* 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
$ python --version
Python 2.7.6
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3

pyenv global

通過寫入python版本到~/.pyenv/version來設定全域性python版本。該配置會被.python-version檔案或PYENV_VERSION環境變數覆蓋

  • 設定全域性python版本為2.7.6:pyenv global 2.7.6

  • 設定多個全域性版本:pyenv global 2.7.6 3.3.3

pyenv shell

通過在shell中設定PYENV_VERSION環境變數來設定一個特定於shell的Python版本。該設定會覆蓋特定於應用的版本和全域性版本

  • 設定特定與shell的版本:pyenv shell pypy-2.2.1

  • 設定多個:pyenv shell pypy-2.2.1 3.3.3

  • 取消設定:pyenv shell --unset

pyenv install

安裝一個指定版本的python。版本來源

Usage: pyenv install [-f] [-kvp] <version>
       pyenv install [-f] [-kvp] <definition-file>
       pyenv install -l|--list

  -l/--list             List all available versions
  -f/--force            Install even if the version appears to be installed already
  -s/--skip-existing    Skip the installation if the version appears to be installed already

  python-build options:

  -k/--keep        Keep source tree in $PYENV_BUILD_ROOT after installation
                   (defaults to $PYENV_ROOT/sources)
  -v/--verbose     Verbose mode: print compilation status to stdout
  -p/--patch       Apply a patch from stdin before building
  -g/--debug       Build a debug version

To list the all available versions of Python, including Anaconda, Jython, pypy, and stackless, use:

  • 列出所有可用的python:pyenv install --list
  • 安裝某個特定版本的python:pyenv install 2.7.6

pyenv uninstall

解除安裝一個指定版本的python:pyenv uninstall 2.7.6

Usage: pyenv uninstall [-f|--force] <version>

   -f  Attempt to remove the specified version without prompting
       for confirmation. If the version does not exist, do not
       display an error message.

pyenv rehash

為所有的pyenv已知的python二進位制檔案安裝一個墊片(用於覆蓋PATH環境變數的python配置)。在安裝完一個新的python後執行該命令。

pyenv version

檢視當前啟用的python的版本

$ pyenv version
2.7.6 (set by /home/yyuu/.pyenv/version)

pyenv versions

列出pyenv已知的所有python版本,並展示當前已啟用版本

$ pyenv versions
  2.5.6
  2.6.8
* 2.7.6 (set by /home/yyuu/.pyenv/version)
  3.3.3
  jython-2.5.3
  pypy-2.2.1

pyenv which

展示指定Python版本的全路徑

$ pyenv which python3.3
/home/yyuu/.pyenv/versions/3.3.3/bin/python3.3

pyenv whence

列出所有安裝了給定命令的Python版本

# 列出所有安裝了2to3命令的python版本
$ pyenv whence 2to3
2.6.8
2.7.6
3.3.3