如何在一臺電腦上管理多個版本的Python?
文章目錄
如何在同一個電腦上安裝多個版本的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"
- powershell或git bash:
- 使用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