因本地电脑内存有限,打算把某个数据校验的 Python 脚本放到公司服务器上执行。但登录服务器后发现,服务器已安装的 Python 版本和我本地使用的版本不一样,直接运行大概率会出现版本、依赖不兼容的问题。所以我计划在服务器上单独新建一个专属的项目目录,只为这个目录安装和本地相同的 Python 版本;其他项目目录继续使用服务器原来的默认 Python 版本,这样既不影响自己的脚本运行,也不会干扰其他同事的工作。
查阅相关资料后发现,可借助 pyenv(Python 版本管理工具) 解决该问题:该工具支持在服务器中安装并管理多个 Python 版本,同时能够为不同项目目录精准配置对应的 Python 版本,实现各项目运行环境的隔离与独立。接下来我详细讲一下具体的操作步骤吧~
操作步骤
步骤1: 安装编译依赖
注:安装编译依赖即为从源代码编译安装Python准备必要的开发环境和库文件
# CentOS/RHEL/Fedorasudo yum install -y gcc zlib-devel bzip2 bzip2-devel readline-devel \sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
步骤2:安装pyenv
自动安装
注:我在服务器上面没安装成功;因此选择了下面的手动安装的方式
使用官方安装脚本(最省心)
# 使用官方安装脚本(最省心)curl https://pyenv.run | bash# 然后重启终端或运行:exec $SHELL
手动安装
步骤3:验证pyenv安装
# 检查是否安装成功pyenv --version# 检查pyenv命令是否可用which pyenv
步骤4:使用pyenv安装Python 3.13
# 查看可用的Python 3.13版本pyenv install --list | grep "3.13"# 安装最新的Python 3.13pyenv install 3.13.0# 列出当前服务器上通过 pyenv 安装的所有 Python 版本pyenv versions
步骤5:为指定的项目目录设置Python版本
注:若项目目录已经使用pyenv local 3.13.0设置过,那么进入该目录后会自动激活3.13.0环境,无需手动激活。
pyenv local用于在当前目录设置一个本地(局部)的Python版本。这个设置会覆盖全局版本和系统版本
# 进入项目目录cd /path/to/your/project# 使用pyenv local设置该项目使用Python 3.13pyenv local 3.13.0# 这会生成一个.python-version文件,之后在此目录下:python your_script.py # 自动使用3.13.0# 查看当前目录使用的版本pyenv version
步骤6:为当前pyenv的Python版本安装pymysql
注:由于我的验证脚本需要用到pymysql,还需要给当前pyenv的Python版本安装pymysql
# 为pyenv的Python 3.13.0安装pymysqlpyenv exec pip install pymysql
步骤7:验证安装
pyenv shell 3.13.0python -c "import pymysql; print('pymysql导入成功')"
步骤8:运行python脚本
# 在指定的项目目录下运行python脚本python xxx.py