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

pyenv管理多個(gè)版本python的完整指南

 更新時(shí)間:2025年12月05日 09:05:12   作者:MrSYJ  
這篇文章主要為大家詳細(xì)介紹了pyenv管理多個(gè)版本python的完整指南,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下

一.安裝openssl

購(gòu)買的阿里云服務(wù)器自帶的 openssl版本太低了,1.0.2版本。但是python3.10版本需要的openssl至少是1.1.1版本

[xpe@ilabx_ide ~]$ openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

所以我們需要單獨(dú)在裝一個(gè)新版本的OpenSSL,并且不能影響系統(tǒng)已有的舊版本openssl。

不影響系統(tǒng)現(xiàn)有 OpenSSL 1.0.x 的情況下,手動(dòng)編譯并安裝一個(gè) OpenSSL 1.1.1 的副本,然后強(qiáng)制 pyenv 使用這個(gè)新版本來(lái)編譯 Python 3.10.12。

1.安裝openssl 具體步驟

編譯 OpenSSL 本身所必需的依賴,主要是 gccmake

yum install -y gcc make
sudo yum install -y \
    gcc make \
    openssl-devel \
    zlib-devel \
    bzip2-devel \
    readline-devel \
    sqlite-devel \
    libffi-devel \
    xz-devel # 針對(duì) Python 3.10 的 lzma 模塊

我們將把 OpenSSL 1.1.1 安裝到 /usr/local/custom_ssl/openssl-1.1.1

2.下載 openssl-1.1.1w.tar.gz

# 切換到一個(gè)臨時(shí)目錄
cd /tmp

# 下載 OpenSSL 1.1.1 (這是一個(gè) LTS 版本,非常適合 Python 3.10)
# **注意:請(qǐng)檢查最新的 1.1.1 版本,這里以 1.1.1w 為例**
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz

# 解壓
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/

3.配置編譯和安裝

# **使用 --prefix 指定安裝到一個(gè)隔離的目錄**
# 建議您在 /usr/local 下創(chuàng)建一個(gè)非沖突目錄
INSTALL_PATH=/usr/local/custom_ssl/openssl-1.1.1w

# 配置:使用 shared 選項(xiàng)以便于 Python 鏈接
./config shared --prefix=$INSTALL_PATH

# 編譯
make

# **安裝 (這一步可能需要 sudo 權(quán)限)**
sudo make install

解釋說(shuō)明

  • config 階段使用了 --prefix=$INSTALL_PATH,所以生成的 Makefile 才知道在您運(yùn)行 make install 時(shí),應(yīng)該把編譯好的 OpenSSL 文件復(fù)制到 /usr/local/custom_ssl/openssl-1.1.1w 這個(gè)目標(biāo)目錄中去
  • make 負(fù)責(zé)將原始的源代碼(.c, .h 文件等)轉(zhuǎn)換成機(jī)器可執(zhí)行的二進(jìn)制成品(可執(zhí)行文件 .exe 或庫(kù)文件 .so / .a)。這個(gè)過(guò)程是 “生產(chǎn)” 。
  • make install 負(fù)責(zé)將這些 “生產(chǎn)好的成品” 從源代碼目錄復(fù)制到您指定的最終安裝位置(由 ./config --prefix 指定)。這個(gè)過(guò)程是 “部署” 。

流程總結(jié):

  • 配置 (./config) → 生產(chǎn)藍(lán)圖 (Makefile)
  • 構(gòu)建 (make) → 按照藍(lán)圖生產(chǎn)成品 (.so, .a 文件)
  • 安裝 (make install) → 將成品部署到最終位置 (--prefix 路徑)

4.make install做了什么

在您執(zhí)行了 ./config shared --prefix=/usr/local/custom_ssl/openssl-1.1.1w 之后,make install 會(huì)執(zhí)行以下任務(wù):

  • 讀取安裝規(guī)則: 它讀取 Makefile 中定義的安裝規(guī)則(通常是 install target)。
  • 創(chuàng)建目錄結(jié)構(gòu): 它在 $INSTALL_PATH 下創(chuàng)建標(biāo)準(zhǔn)的子目錄,例如 bin/、lib/、include/、share/ 等。
  • 復(fù)制文件: 它將 make 編譯好的所有文件,根據(jù)它們的類型,復(fù)制到 $INSTALL_PATH 下對(duì)應(yīng)的子目錄中。

所有文件都是相對(duì)于設(shè)置的 --prefix 路徑 $INSTALL_PATH (/usr/local/custom_ssl/openssl-1.1.1w) 進(jìn)行安裝的

5.總結(jié)關(guān)鍵點(diǎn)

路徑隔離: 由于您使用了 --prefix,所有這些文件都被安全地安裝到了 /usr/local/custom_ssl/openssl-1.1.1w 這個(gè)隔離的沙盒中。它們不會(huì)覆蓋或干擾您系統(tǒng)上任何依賴 OpenSSL 1.0.x 的現(xiàn)有 Python 2 或 Python 3.6 程序。

編譯目的: 通過(guò) make install,我們確保了 OpenSSL 1.1.1w 的 庫(kù)文件 (lib/)頭文件 (include/) 結(jié)構(gòu)完整地存在于一個(gè)確定的、非系統(tǒng)默認(rèn)的路徑下。

驗(yàn)證:執(zhí)行./openssl version

[root@s71 bin]# ./openssl version
./openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

發(fā)現(xiàn)報(bào)錯(cuò),可以用 臨時(shí)設(shè)置環(huán)境變量 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/local/custom_ssl/openssl-1.1.1w/lib:$LD_LIBRARY_PATH

然后在執(zhí)行

[xpe@s71 bin]$ ./openssl version
OpenSSL 1.1.1w  11 Sep 2023

大概原理是:

  • 程序啟動(dòng): 運(yùn)行 ./openssl version
  • 鏈接器工作: 動(dòng)態(tài)鏈接器啟動(dòng),開始尋找 libssl.so.1.1。
  • 命中 LD_LIBRARY_PATH 鏈接器發(fā)現(xiàn) LD_LIBRARY_PATH 已經(jīng)被設(shè)置為 /usr/local/custom_ssl/openssl-1.1.1w/lib:...
  • 加載成功: 鏈接器在 /usr/local/custom_ssl/openssl-1.1.1w/lib 目錄中找到了 libssl.so.1.1,成功加載并允許您的 OpenSSL 1.1.1w 程序運(yùn)行。

二.安裝pyenv

切換到具體的用戶下 去安裝pyenv 這里采用git的方式

使用 Git 工具,將位于 https://github.com/pyenv/pyenv.gitpyenv 官方項(xiàng)目的所有文件,完整地下載并復(fù)制到你的 主目錄 (~) 下的 .pyenv 隱藏文件夾 中

1.下載pyenv

1.克隆 pyenv 倉(cāng)庫(kù)到你的主目錄

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

或者使用ssh方式,需要將你服務(wù)器的公鑰復(fù)制到github中

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

設(shè)置環(huán)境變量,將 pyenv 路徑添加到環(huán)境變量

2. 將 pyenv 路徑添加到環(huán)境變量

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

3. 初始化 pyenv 

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init --path)"\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

4. 重新加載 shell 配置

source ~/.bashrc

2.pyenv常用命令

然后就可以使用pyenv來(lái)管理多個(gè)python版本了

# 查看所有可安裝的版本
pyenv install --list 

# 安裝你需要的版本,注意不要直接安裝 需要配置指定的openssl
pyenv install 3.10.12

3. 設(shè)置局部(Local)Python 版本

這是最關(guān)鍵的一步,它確保新安裝的Python版本只對(duì)你的當(dāng)前項(xiàng)目目錄生效。

mkdir -p ~/my_new_project
cd ~/my_new_project
pyenv local 3.10.12

這個(gè)命令會(huì)在你的項(xiàng)目目錄下創(chuàng)建一個(gè)名為 .python-version 的文件,文件內(nèi)容就是 3.10.12

現(xiàn)在,當(dāng)你在這個(gè)目錄內(nèi)時(shí),你使用的就是局部安裝的Python。

驗(yàn)證: which python

這個(gè)命令的作用是設(shè)置和綁定(set and bind)一個(gè)已經(jīng)安裝好的 Python 版本到當(dāng)前的目錄。

4.pyenv local的工作原理

1.查找版本: 它首先檢查您指定的 <version> (例如 3.10.12) 是否已經(jīng)存在于您的 ~/.pyenv/versions/ 目錄下。

如果不存在,它會(huì)報(bào)錯(cuò),提示您需要先運(yùn)行 pyenv install <version>

2.創(chuàng)建文件: 如果版本已安裝,它會(huì)在您當(dāng)前所在的目錄中創(chuàng)建一個(gè)名為 .python-version 的文件。

3.寫入版本號(hào): 這個(gè)文件里只包含一行文本,就是您指定的版本號(hào)(例如 3.10.12)。

4.運(yùn)行時(shí)切換: 當(dāng)您運(yùn)行任何 Python 相關(guān)的命令(如 pythonpip)時(shí):

  • pyenv 會(huì)通過(guò)其在 Shell 配置中注入的**墊片(shims)**機(jī)制攔截這個(gè)命令。
  • pyenv 會(huì)從當(dāng)前目錄開始,向上級(jí)目錄逐級(jí)查找這個(gè) .python-version 文件。
  • 找到文件后,pyenv 會(huì)讀取里面的版本號(hào),并修改您的 PATH,將命令執(zhí)行重定向到 ~/.pyenv/versions/<version>/bin/python。

PYENV_ROOT 下有一個(gè)關(guān)鍵的子目錄叫 versions。所有通過(guò) pyenv install 命令安裝的 Python 環(huán)境都會(huì)存放在這里。

并且你的 PYENV_ROOT 是默認(rèn)的 ~/.pyenv

  • 用戶隔離: 所有安裝都在你的用戶主目錄下,不影響系統(tǒng)的全局安裝(通常在 /usr/bin/python/usr/local/bin/python)。
  • 環(huán)境獨(dú)立: 每個(gè)版本都是一個(gè)完全獨(dú)立、自包含的環(huán)境,互不干擾。

列出所有的版本

pyenv versions

* 星號(hào): 星號(hào)(*)標(biāo)記當(dāng)前 Shell 正在使用的 Python 版本。在上面的例子中,當(dāng)前使用的是 system 版本(即系統(tǒng)自帶的 Python)。

顯示當(dāng)前用的哪個(gè)版本

pyenv version

完整步驟

1.為了確保 OpenSSL 和 Python 都能順利編譯,需要安裝所有必需的編譯工具和通用依賴。

# 1. 確保安裝了基本的編譯工具 (gcc, make)
sudo yum install -y gcc make

# 2. 確保安裝了 Python 編譯可能需要的所有通用開發(fā)依賴包
# 盡管我們隔離安裝 OpenSSL,但其他 Python 模塊可能需要這些系統(tǒng)的 devel 包
sudo yum install -y \
    zlib-devel \
    bzip2-devel \
    readline-devel \
    sqlite-devel \
    libffi-devel \
    xz-devel

2.安裝OPENSSL

# 定義安裝目錄(非常關(guān)鍵)
INSTALL_PATH=/usr/local/custom_ssl/openssl-1.1.1w

# 1. 切換到臨時(shí)目錄
cd /tmp

# 2. 下載 OpenSSL 1.1.1w 源代碼 (請(qǐng)確認(rèn)這是最新的 1.1.1 版本)
# 推薦使用:
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz

# 3. 解壓源代碼
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/

# 4. 配置 (使用 shared 選項(xiàng)和 --prefix 指定隔離路徑)
# **注意:以下命令需要 root 或 sudo 權(quán)限來(lái)執(zhí)行 make install**
./config shared --prefix=$INSTALL_PATH

# 5. 編譯
make

# 6. 安裝 (使用 sudo 權(quán)限將編譯結(jié)果安裝到隔離目錄)
sudo make install

# 7. 清理臨時(shí)文件 (可選)
cd /tmp
rm -rf openssl-1.1.1w openssl-1.1.1w.tar.gz

3.使用上一步的openssl 編譯python

# 1. 定義 OpenSSL 的安裝根目錄
export OPENSSL_ROOT=/usr/local/custom_ssl/openssl-1.1.1w

# 2. 確保之前失敗的版本被清理(如果存在)
pyenv uninstall 3.10.12

# 3. 設(shè)置環(huán)境變量并運(yùn)行 pyenv install
# PYTHON_CONFIGURE_OPTS 是最關(guān)鍵的,它告訴 Python 配置腳本 OpenSSL 的路徑。
PYTHON_CONFIGURE_OPTS="--with-openssl=$OPENSSL_ROOT" \
CFLAGS="-I$OPENSSL_ROOT/include" \
LDFLAGS="-L$OPENSSL_ROOT/lib" \
pyenv install 3.10.12

# 4. 驗(yàn)證安裝
pyenv versions
# 應(yīng)該會(huì)看到 3.10.12

# 5. 激活并測(cè)試 Python
pyenv local 3.10.12 # 或者 pyenv global 3.10.12
python -c "import ssl; print(ssl.OPENSSL_VERSION)"
# 應(yīng)該輸出 OpenSSL 1.1.1w ... 或類似的版本信息,而不是 1.0.x

安裝過(guò)程 如下圖:

安裝python如果慢 就使用鏡像,設(shè)置環(huán)境變量

export PYTHON_BUILD_MIRROR_URL="https://mirrors.tuna.tsinghua.edu.cn/python/"
export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1

到此這篇關(guān)于pyenv管理多個(gè)版本python的完整指南的文章就介紹到這了,更多相關(guān)pyenv管理多個(gè)版本python內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Python識(shí)別人臉,人種等各種信息

    用Python識(shí)別人臉,人種等各種信息

    這篇文章主要介紹了用Python識(shí)別人臉,人種等各種信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python?實(shí)現(xiàn)?mp3Play?音頻播放

    python?實(shí)現(xiàn)?mp3Play?音頻播放

    這篇文章主要介紹了python?實(shí)現(xiàn)?mp3Play?音頻播放,文章基于python的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-04-04
  • 通過(guò)Python編寫一個(gè)簡(jiǎn)單登錄功能過(guò)程解析

    通過(guò)Python編寫一個(gè)簡(jiǎn)單登錄功能過(guò)程解析

    這篇文章主要介紹了通過(guò)Python編寫一個(gè)簡(jiǎn)單登錄功能過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python實(shí)現(xiàn)的根據(jù)文件名查找數(shù)據(jù)文件功能示例

    Python實(shí)現(xiàn)的根據(jù)文件名查找數(shù)據(jù)文件功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的根據(jù)文件名查找數(shù)據(jù)文件功能,涉及Python針對(duì)文件與目錄的遍歷、查詢等相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python版名片管理系統(tǒng)

    Python版名片管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Python版名片管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python pillow模塊使用方法詳解

    python pillow模塊使用方法詳解

    這篇文章主要介紹了python pillow模塊使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python3爬蟲中引用Queue的實(shí)例講解

    python3爬蟲中引用Queue的實(shí)例講解

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python3爬蟲中引用Queue的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-11-11
  • 詳解python?pycharm與cmd中制表符不一樣

    詳解python?pycharm與cmd中制表符不一樣

    本文主要介紹了python?pycharm與cmd中制表符不一樣,這個(gè)問題通常是因?yàn)镻yCharm和命令行(CMD)使用的制表符(tab)的寬度不同導(dǎo)致的,下面就來(lái)介紹一下解決方法,感興趣的可以了解一下
    2025-08-08
  • Linux下使用python自動(dòng)修改本機(jī)網(wǎng)關(guān)代碼分享

    Linux下使用python自動(dòng)修改本機(jī)網(wǎng)關(guān)代碼分享

    這篇文章主要介紹了Linux下使用python自動(dòng)修改本機(jī)網(wǎng)關(guān)代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-05-05
  • python中查看變量?jī)?nèi)存地址的方法

    python中查看變量?jī)?nèi)存地址的方法

    這篇文章主要介紹了python中查看變量?jī)?nèi)存地址的方法,涉及Python中id使用技巧,需要的朋友可以參考下
    2015-05-05

最新評(píng)論

常德市| 栾川县| 广东省| 炉霍县| 菏泽市| 如东县| 定兴县| 收藏| 九龙坡区| 浮梁县| 木里| 耒阳市| 营口市| 三台县| 饶阳县| 博湖县| 吉水县| 德钦县| 常州市| 山东省| 清新县| 弥渡县| 本溪市| 涟源市| 和平县| 衡阳市| 阿拉善盟| 竹北市| 盘锦市| 武定县| 云龙县| 淮北市| 保靖县| 长乐市| 北安市| 南宫市| 论坛| 永川市| 获嘉县| 体育| 保山市|