使用 pyenv 安装和管理 Python 版本

2025-06-04 宋洋葱 宋洋葱 1 min

前言

开发了一个 python 后端 api,其中用到了阿里云 python sdk 。

send_sms_verify_code_request = dypnsapi_20170525_models.SendSmsVerifyCodeRequest(
            sign_name='云渚科技验证服务',
            template_code='100001',
            phone_number='12345678911',
            template_param='{"code":"##code##"}'
        )

本地运行完全没问题。但是部署到 debian 12 服务器就报错:

module 'alibabacloud_dypnsapi20170525.models' has no attribute 'SendSmsVerifyCodeRequest'

尝试了半天没解决,对比后发现 python 版本不一样,我本地是 3.10.12,线上的 python 是 3.11.2。怀疑是版本不同引发的问题。决定使用 pyenv 管理不同版本的 python。

安装 pyenv

pyenv 官方推荐使用脚本安装

<pre>curl -fsSL https://pyenv.run | bash</pre>

国内访问 github 受限,经常安装失败,会报错:

Cloning into '/root/.pyenv'... fatal: unable to access 'https://github.com/pyenv/pyenv.git/': GnuTLS recv error (-110): The TLS connection was non-properly terminated.

可以通过镜像站安装,如 gh-proxy.com

rm -rf /root/.pyenv
curl -fsSL  https://gh-proxy.com/github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

设置 pyenv 环境变量

通过在 ~/.bash_profile 文件中添加以下代码自动加载 pyenv:

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"

eval "$(pyenv init - bash)"

通过在 ~/.bashrc 文件中添加以下代码自动加载 pyenv-virtualenv

Comments