最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python多版本管理方式(pyenv)

 更新時間:2026年04月08日 08:39:05   作者:大、男人  
pyenv是Python版本管理神器,可以解決多Python版本共存、版本沖突、環(huán)境不一致等問題,可以安裝、切換、卸載Python版本,隔離不同版本的依賴包,無需手動配置路徑,文章詳細(xì)介紹了pyenv的安裝、使用方法及其他常用命令

上篇文章提到了uv 可以進(jìn)行 pip 包管理和 虛擬環(huán)境構(gòu)建,其實,對于我們來說,還有一個需求,就是多個python環(huán)境進(jìn)行管理,剛好找了下,發(fā)現(xiàn)了這個pyenv工具。話不多少,直接開始。

pyenv(Windows 下為pyenv-win)是Python 版本管理神器,核心解決「多 Python 版本共存、版本沖突、環(huán)境不一致」的痛點,讓你在一臺電腦上無痛切換不同 Python 版本,不用手動改環(huán)境變量、卸載重裝,是 Python 開發(fā)的必備工具。

一、pyenv可以干什么事情?

1.1 多版本 Python 共存(最核心)

手動管理多個 Python 版本時,你需要反復(fù)修改環(huán)境變量、記住不同版本的安裝路徑,極易混亂;而 pyenv 能:

  • 一鍵安裝 Python 2.7/3.6/3.10/3.12 等任意版本(包括 Anaconda、Miniconda、PyPy 等衍生版本);
  • 所有版本隔離存儲在~/.pyenv目錄(Windows:%USERPROFILE%\.pyenv),互不干擾;
  • 無需卸載現(xiàn)有 Python,系統(tǒng)自帶的 Python 也不會被修改 / 覆蓋。

1.2. 靈活切換版本(3 種維度,按需選擇)

切換維度作用范圍適用場景
全局版本整個系統(tǒng)(所有目錄)設(shè)置系統(tǒng)默認(rèn) Python 版本(比如日常開發(fā)用 3.10)
局部版本當(dāng)前目錄 + 子目錄項目專屬版本(比如給 A 項目設(shè) 3.9,B 項目設(shè) 3.11)
臨時版本僅當(dāng)前終端會話臨時測試某個版本(比如快速驗證代碼在 3.8 下是否兼容)

1.3. 隔離不同版本的依賴包

不同 Python 版本的pip包是完全隔離的,不會出現(xiàn)「裝了 3.10 的 Django,3.9 里也能看到」的混亂:

  • 比如 Python 3.8 裝Django 4.0,Python 3.10 裝Django 5.0,兩者互不影響;
  • 解決「升級一個版本的包,導(dǎo)致另一個項目報錯」的問題。

1. 4. 無痛安裝 / 卸載 Python 版本

不用手動去 Python 官網(wǎng)下載安裝包、手動配置路徑、擔(dān)心卸載殘留:

  • 安裝:一行命令pyenv install 3.10.11,自動下載、安裝、配置;
  • 卸載:一行命令pyenv uninstall 3.10.11,徹底刪除該版本及對應(yīng)依賴,無殘留;
  • 安裝慢?手動下載安裝包到緩存目錄,pyenv 會自動識別,不用改命令。

二、pyenv安裝

windows系統(tǒng)

powershell -ExecutionPolicy Bypass -Command "Invoke-WebRequest -UseBasicParsing -Uri https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1 -OutFile install-pyenv-win.ps1; .\install-pyenv-win.ps1"

如果你已經(jīng)下載了install-pyenv-win.ps1到 Downloads 目錄,直接執(zhí)行:

cd C:\Users\juxuan\Downloads
powershell -ExecutionPolicy Bypass -File .\install-pyenv-win.ps1

腳本會自動:

  • 將 pyenv-win 安裝到 %USERPROFILE%\.pyenv\pyenv-win(即C:\Users\juxuan\.pyenv\pyenv-win);
  • 配置環(huán)境變量(PYENV_ROOTPATH添加binshims路徑)。

如果你不能翻.墻,腳本下載失敗,我這里也有腳本內(nèi)容,直接保存為install-pyenv-win.ps1。

<#
    .SYNOPSIS
    Installs pyenv-win

    .DESCRIPTION
    Installs pyenv-win to $HOME\.pyenv
    If pyenv-win is already installed, try to update to the latest version.

    .PARAMETER Uninstall
    Uninstall pyenv-win. Note that this uninstalls any Python versions that were installed with pyenv-win.

    .INPUTS
    None.

    .OUTPUTS
    None.

    .EXAMPLE
    PS> install-pyenv-win.ps1

    .LINK
    Online version: https://pyenv-win.github.io/pyenv-win/
#>
    
param (
    [Switch] $Uninstall = $False
)
    
$PyEnvDir = "${env:USERPROFILE}\.pyenv"
$PyEnvWinDir = "${PyEnvDir}\pyenv-win"
$BinPath = "${PyEnvWinDir}\bin"
$ShimsPath = "${PyEnvWinDir}\shims"
    
Function Remove-PyEnvVars() {
    $PathParts = [System.Environment]::GetEnvironmentVariable('PATH', "User") -Split ";"
    $NewPathParts = $PathParts.Where{ $_ -ne $BinPath }.Where{ $_ -ne $ShimsPath }
    $NewPath = $NewPathParts -Join ";"
    [System.Environment]::SetEnvironmentVariable('PATH', $NewPath, "User")

    [System.Environment]::SetEnvironmentVariable('PYENV', $null, "User")
    [System.Environment]::SetEnvironmentVariable('PYENV_ROOT', $null, "User")
    [System.Environment]::SetEnvironmentVariable('PYENV_HOME', $null, "User")
}

Function Remove-PyEnv() {
    Write-Host "Removing $PyEnvDir..."
    If (Test-Path $PyEnvDir) {
        Remove-Item -Path $PyEnvDir -Recurse
    }
    Write-Host "Removing environment variables..."
    Remove-PyEnvVars
}

Function Get-CurrentVersion() {
    $VersionFilePath = "$PyEnvDir\.version"
    If (Test-Path $VersionFilePath) {
        $CurrentVersion = Get-Content $VersionFilePath
    }
    Else {
        $CurrentVersion = ""
    }

    Return $CurrentVersion
}

Function Get-LatestVersion() {
    $LatestVersionFilePath = "$PyEnvDir\latest.version"
    (New-Object System.Net.WebClient).DownloadFile("https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/.version", $LatestVersionFilePath)
    $LatestVersion = Get-Content $LatestVersionFilePath

    Remove-Item -Path $LatestVersionFilePath

    Return $LatestVersion
}

Function Main() {
    If ($Uninstall) {
        Remove-PyEnv
        If ($? -eq $True) {
            Write-Host "pyenv-win successfully uninstalled."
        }
        Else {
            Write-Host "Uninstallation failed."
        }
        exit
    }

    $BackupDir = "${env:Temp}/pyenv-win-backup"
    
    $CurrentVersion = Get-CurrentVersion
    If ($CurrentVersion) {
        Write-Host "pyenv-win $CurrentVersion installed."
        $LatestVersion = Get-LatestVersion
        If ($CurrentVersion -eq $LatestVersion) {
            Write-Host "No updates available."
            exit
        }
        Else {
            Write-Host "New version available: $LatestVersion. Updating..."
            
            Write-Host "Backing up existing Python installations..."
            $FoldersToBackup = "install_cache", "versions", "shims"
            ForEach ($Dir in $FoldersToBackup) {
                If (-not (Test-Path $BackupDir)) {
                    New-Item -ItemType Directory -Path $BackupDir
                }
                Move-Item -Path "${PyEnvWinDir}/${Dir}" -Destination $BackupDir
            }
            
            Write-Host "Removing $PyEnvDir..."
            Remove-Item -Path $PyEnvDir -Recurse
        }   
    }

    New-Item -Path $PyEnvDir -ItemType Directory

    $DownloadPath = "$PyEnvDir\pyenv-win.zip"

    (New-Object System.Net.WebClient).DownloadFile("https://github.com/pyenv-win/pyenv-win/archive/master.zip", $DownloadPath)

    Start-Process -FilePath "powershell.exe" -ArgumentList @(
        "-NoProfile",
        "-Command `"Microsoft.PowerShell.Archive\Expand-Archive -Path \`"$DownloadPath\`" -DestinationPath \`"$PyEnvDir\`"`""
    ) -NoNewWindow -Wait

    Move-Item -Path "$PyEnvDir\pyenv-win-master\*" -Destination "$PyEnvDir"
    Remove-Item -Path "$PyEnvDir\pyenv-win-master" -Recurse
    Remove-Item -Path $DownloadPath

    # Update env vars
    [System.Environment]::SetEnvironmentVariable('PYENV', "${PyEnvWinDir}\", "User")
    [System.Environment]::SetEnvironmentVariable('PYENV_ROOT', "${PyEnvWinDir}\", "User")
    [System.Environment]::SetEnvironmentVariable('PYENV_HOME', "${PyEnvWinDir}\", "User")

    $PathParts = [System.Environment]::GetEnvironmentVariable('PATH', "User") -Split ";"

    # Remove existing paths, so we don't add duplicates
    $NewPathParts = $PathParts.Where{ $_ -ne $BinPath }.Where{ $_ -ne $ShimsPath }
    $NewPathParts = ($BinPath, $ShimsPath) + $NewPathParts
    $NewPath = $NewPathParts -Join ";"
    [System.Environment]::SetEnvironmentVariable('PATH', $NewPath, "User")

    If (Test-Path $BackupDir) {
        Write-Host "Restoring Python installations..."
        Move-Item -Path "$BackupDir/*" -Destination $PyEnvWinDir
    }
    
    If ($? -eq $True) {
        Write-Host "pyenv-win is successfully installed. You may need to close and reopen your terminal before using it."
    }
    Else {
        Write-Host "pyenv-win was not installed successfully. If this issue persists, please open a ticket: https://github.com/pyenv-win/pyenv-win/issues."
    }
}

Main

三、pyenv使用方法

1. 查看可安裝的 Python 版本

列出所有官方可安裝的 Python 版本(含 3.x、2.x、anaconda 等):

pyenv install --list  # 簡寫:pyenv install -l

篩選常用版本(比如只看 3.10 開頭):

pyenv install -l | findstr "3.10"  # Windows
# pyenv install -l | grep "3.10"   # Linux/macOS

2. 安裝指定版本的 Python

# 示例:安裝Python 3.10.11
pyenv install 3.10.11

3. 查看已安裝的 Python 版本

列出本地所有已安裝的 Python 版本(*標(biāo)記當(dāng)前生效版本):

pyenv versions

4. 切換 Python 版本(核心)

pyenv支持 3 種維度的版本切換,優(yōu)先級:臨時版本 > 局部版本 > 全局版本。

(1)全局版本(系統(tǒng)級,所有目錄生效)

設(shè)置后整個系統(tǒng)默認(rèn)使用該版本(重啟終端生效):

# 示例:設(shè)置全局版本為3.10.11
pyenv global 3.10.11

(2)局部版本(目錄級,僅當(dāng)前目錄 / 子目錄生效)

針對項目目錄單獨設(shè)置版本(會在目錄下生成.python-version文件,提交到 Git 可同步團(tuán)隊版本):

# 進(jìn)入項目目錄
cd C:\Users\juxuan\my_project
# 設(shè)置局部版本為3.9.18
pyenv local 3.9.18

取消局部版本:

pyenv local --unset

(3)臨時版本(終端會話級,僅當(dāng)前終端生效)

僅在當(dāng)前終端窗口生效,關(guān)閉后恢復(fù):

# 示例:臨時使用3.8.19
pyenv shell 3.8.19

取消臨時版本:

pyenv shell --unset

5. 驗證版本是否生效

設(shè)置版本后,執(zhí)行以下命令確認(rèn):

# 查看Python版本(pyenv接管后的版本)
python --version
# 查看pip版本(對應(yīng)當(dāng)前Python)
pip --version

6. 卸載指定版本的 Python

# 示例:卸載3.8.19
pyenv uninstall 3.8.19

四、其他常用命令

命令作用
pyenv rehash重新生成版本映射(安裝 / 卸載版本后建議執(zhí)行,避免命令找不到)
pyenv which python查看當(dāng)前python命令的實際路徑
pyenv root查看 pyenv 的安裝根目錄(Windows 默認(rèn):% USERPROFILE%.pyenv)

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python-ElasticSearch搜索查詢的講解

    Python-ElasticSearch搜索查詢的講解

    今天小編就為大家分享一篇關(guān)于Python-ElasticSearch搜索查詢的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • python opencv實現(xiàn)圖片旋轉(zhuǎn)矩形分割

    python opencv實現(xiàn)圖片旋轉(zhuǎn)矩形分割

    這篇文章主要為大家詳細(xì)介紹了python opencv實現(xiàn)圖片旋轉(zhuǎn)矩形分割,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 舉例講解Python中is和id的用法

    舉例講解Python中is和id的用法

    這篇文章主要介紹了舉例講解Python中is和id的用法,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識,作者舉例進(jìn)行了簡單說明,需要的朋友可以參考下
    2015-04-04
  • django Admin文檔生成器使用詳解

    django Admin文檔生成器使用詳解

    這篇文章主要介紹了django Admin文檔生成器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python 中制作偶數(shù)列表的方法

    Python 中制作偶數(shù)列表的方法

    這篇文章主要介紹了Python 中制作偶數(shù)列表的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 如何基于Python + requests實現(xiàn)發(fā)送HTTP請求

    如何基于Python + requests實現(xiàn)發(fā)送HTTP請求

    這篇文章主要介紹了如何基于Python + requests實現(xiàn)發(fā)送HTTP請求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python定時任務(wù)sched模塊用法示例

    Python定時任務(wù)sched模塊用法示例

    這篇文章主要介紹了Python定時任務(wù)sched模塊用法,結(jié)合實例形式分析了定時任務(wù)sched模塊的基本功能、參數(shù)含義、多線程定時任務(wù)等相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python 中檢查一個字符是否為數(shù)字的示例代碼

    Python 中檢查一個字符是否為數(shù)字的示例代碼

    本文詳細(xì)介紹了在 Python 中檢查一個字符是否為數(shù)字的幾種常用方法。我們介紹了使用 isdigit() 方法、isnumeric() 方法和正則表達(dá)式等方法,并提供了示例代碼幫助你理解和應(yīng)用這些方法,需要的朋友可以參考下
    2023-06-06
  • python實現(xiàn)XML解析的方法解析

    python實現(xiàn)XML解析的方法解析

    這篇文章主要介紹了python實現(xiàn)XML解析的方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Python中操作文件夾和文件路徑的方法

    Python中操作文件夾和文件路徑的方法

    文章主要介紹了Python標(biāo)準(zhǔn)庫os中操作文件和文件夾的相關(guān)函數(shù),本文結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-12-12

最新評論

新野县| 砀山县| 宁武县| 南京市| 兴海县| 黄梅县| 陕西省| 临桂县| 肥西县| 县级市| 莱西市| 安化县| 黄龙县| 永平县| 盐源县| 盐津县| 景泰县| 昌吉市| 湖南省| 太康县| 枣阳市| 泗阳县| 永清县| 峨山| 乌鲁木齐县| 衡水市| 盐城市| 宝鸡市| 武乡县| 南涧| 丹阳市| 华容县| 沂源县| 凭祥市| 伊金霍洛旗| 宿松县| 华容县| 荆门市| 无为县| 榆社县| 郴州市|