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

pyenv管理多個版本python的完整指南

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

一.安裝openssl

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

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

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

不影響系統(tǒng)現(xiàn)有 OpenSSL 1.0.x 的情況下,手動編譯并安裝一個 OpenSSL 1.1.1 的副本,然后強制 pyenv 使用這個新版本來編譯 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 # 針對 Python 3.10 的 lzma 模塊

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

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

# 切換到一個臨時目錄
cd /tmp

# 下載 OpenSSL 1.1.1 (這是一個 LTS 版本,非常適合 Python 3.10)
# **注意:請檢查最新的 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 指定安裝到一個隔離的目錄**
# 建議您在 /usr/local 下創(chuàng)建一個非沖突目錄
INSTALL_PATH=/usr/local/custom_ssl/openssl-1.1.1w

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

# 編譯
make

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

解釋說明

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

流程總結:

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

4.make install做了什么

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

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

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

5.總結關鍵點

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

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

驗證:執(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)報錯,可以用 臨時設置環(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

大概原理是:

  • 程序啟動: 運行 ./openssl version
  • 鏈接器工作: 動態(tài)鏈接器啟動,開始尋找 libssl.so.1.1。
  • 命中 LD_LIBRARY_PATH 鏈接器發(fā)現(xiàn) LD_LIBRARY_PATH 已經被設置為 /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 程序運行。

二.安裝pyenv

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

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

1.下載pyenv

1.克隆 pyenv 倉庫到你的主目錄

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

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

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

設置環(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來管理多個python版本了

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

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

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

這是最關鍵的一步,它確保新安裝的Python版本只對你的當前項目目錄生效。

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

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

現(xiàn)在,當你在這個目錄內時,你使用的就是局部安裝的Python。

驗證: which python

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

4.pyenv local的工作原理

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

如果不存在,它會報錯,提示您需要先運行 pyenv install <version>。

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

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

4.運行時切換: 當您運行任何 Python 相關的命令(如 pythonpip)時:

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

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

并且你的 PYENV_ROOT 是默認的 ~/.pyenv

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

列出所有的版本

pyenv versions

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

顯示當前用的哪個版本

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

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

# 1. 切換到臨時目錄
cd /tmp

# 2. 下載 OpenSSL 1.1.1w 源代碼 (請確認這是最新的 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 選項和 --prefix 指定隔離路徑)
# **注意:以下命令需要 root 或 sudo 權限來執(zhí)行 make install**
./config shared --prefix=$INSTALL_PATH

# 5. 編譯
make

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

# 7. 清理臨時文件 (可選)
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. 設置環(huán)境變量并運行 pyenv install
# PYTHON_CONFIGURE_OPTS 是最關鍵的,它告訴 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. 驗證安裝
pyenv versions
# 應該會看到 3.10.12

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

安裝過程 如下圖:

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

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

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

相關文章

最新評論

建始县| 宜阳县| 竹山县| 嵊泗县| 马鞍山市| 台东县| 洪洞县| 阿拉善右旗| 昌图县| 仁化县| 冀州市| 新野县| 蕉岭县| 常宁市| 平遥县| 霞浦县| 紫金县| 恭城| 阳曲县| 精河县| 深泽县| 延庆县| 克什克腾旗| 皋兰县| 岫岩| 抚顺市| 昌邑市| 金溪县| 和硕县| 千阳县| 霞浦县| 都安| 大理市| 鲁甸县| 克东县| 南乐县| 丰宁| 电白县| 德昌县| 金秀| 元阳县|