pyenv库应用入门与Ubuntu端安装实践

pyenv概述

pyenv 是一个用于管理多个 Python 版本的工具‌,它允许用户在同一台机器上安装、切换和管理不同版本的 Python。

virtualenv、pyvenv、pyenv

virtualenv

virtualenv 所要解决的是同一个库不同版本共存的兼容问题。例如项目 A 需要用到 requests 的 1.0 版本,项目 B 需要用到 requests 的 2.0 版本。如果不使用工具的话,一台机器只能安装其中一个版本,无法满足两个项目的需求。

virtualenv 的解决方案是为每个项目创建一个独立的虚拟环境,在每个虚拟环境中安装的库,对其他虚拟环境完全无影响。所以就可以在一台机器的不同虚拟环境中分别安装同一个库的不同版本。

pyvenv

pyvenv 与 virtualenv 功能和用法类似。不同点在于:

  • pyvenv 只支持 Python 3.3 及更高版本,而 virtualenv 同时支持 Python 2.x 和 Python 3.x;
  • pyvenv 是 Python 3.x 自带的工具,不需要安装,而 virtualenv 是第三方工具,需要安装。
  • pyvenv 实际上是 Python 3.x 的一个模块 venv,等价于 python -m venv。

pyenv

与上述两个工具不同,pyenv 不是用来管理同一个库的多个版本,而是用来管理一台机器上的多个 Python 版本。主要解决开发中有的项目需要用Python 2.x,有的项目需要用Python 3.x的场景。

Ubuntu端安装pyenv实践

安装依赖

在安装pyenv之前,你需要确保你的系统上安装了以下依赖:

  • Git:用于克隆pyenv的仓库
  • Readline:用于命令行补全
  • zlib:用于压缩
  • libssl-dev(在某些系统上可能需要):用于SSL支持
  • libffi-dev(在某些系统上可能需要):用于外部函数接口
  • make:用于编译Python和一些其他软件
  • ** build-essential**(在某些系统上可能需要):包括编译器和其他构建工具

对于Ubuntu/Debian系统:

sudo apt update 
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git

报错解决

  • No module named ‘_bz2’
    sudo apt-get install bzip2 libbz2-dev
  • No module named ‘_curses’
    sudo apt-get install libncurses5-dev libncursesw5-dev
  • No module named ‘_ctypes’
    sudo apt-get install libffi-dev
  • No module named ‘_sqlite’
    sudo apt-get install sqlite3 libsqlite3-dev
  • No module named ‘_ssl’
    sudo apt-get install openssl
    sudo apt-get install libssl-dev
  • No module named ‘_lzma’
    sudo apt-get install liblzma-dev

安装pyenv

使用Git克隆pyenv仓库:

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

配置环境变量

# 编辑.bashrc系统文件
vim ~/.bashrc
# 增加系统环境变量
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$HOME/.pyenv/bin:$PATH"
# 更新文件
source ~/.bashrc

更换pyenv源地址

使用pyenv安装虚拟环境时下载太慢了,可以更换默认的下载源地址:

find ~/.pyenv -type f -exec sed -i 's|https://www.python.org/ftp|https://mirror.nju.edu.cn|g' {} +
  • find ~/.pyenv -type f:在 ~/.pyenv 目录下查找所有类型的文件(不包括目录);
  • -exec … {} +:对找到的每一个文件执行后面的命令。这里的 {} 是一个占位符,代表当前处理的文件名。使用 + 可以让 find 将多个文件名传递给单个命令行,这比使用 ; 更高效;
  • sed -i ‘s|…|…|g’:sed 是一个流编辑器,用于处理或编辑文本。这里使用 -i 选项直接修改文件,而不是输出到标准输出。s|…|…|g 是替换命令,其中 | 分隔符用来代替通常的 / 分隔符,以便更好地处理包含斜杠的URL。

pyenv基本用法

## 查看帮助文档
pyenv

## 查看某个命令帮助文档
pyenv install --help

## 查看版本
pyenv version

## 检查 Python 是否正常运行
python -c "import sys; print(sys.executable)"

## 查看已安装的 Python 版本
pyenv versions

## 查看当前使用的 Python 版本
pyenv version

## 查看所有可用的 Python 版
pyenv install --list 

## 安装指定版本
pyenv install 3.9.1

## 验证
python --version

## 卸载指定版本
pyenv uninstall 3.9.1

## 全局指定 Python 版本(影响所有项目)
pyenv global 3.9.1 

## 局部指定 Python 版本(仅影响当前项目目录),指定后在当前项目目录内创建 .python-version 文件,保存版本信息
## 优先级高于 global
pyenv local 3.9.1

## 会话级指定 Python 版本(影响所有项目)
pyenv shell 3.9.1 

## 查看 python 的安装目录
pyenv which python

## 重新生成 pyenv 的 shims 目录中的可执行文件
pyenv rehash 

安装成功

在这里插入图片描述

服务器部署scrapyd

前面我们已经安装了3.8.20版本的python环境,接下来我们在这个环境下跑脚本

  • 到home目录下新建spider目录,给spider目录绑定3.8.20版本环境
    在这里插入图片描述
  • 安装scrapy:pip install scrapy
  • 新建一个名为TestProjectSecond的scrapy项目,并新建一个脚本,进入该目录,执行scrapy crawl 1
    在这里插入图片描述
  • 安装scrapyd:pip install scrapydpip install scrapyd-client
  • TestProjectSecond下运行scrapyd,这里需要修改一下默认的ip,默认是127.0.0.1,需要改成0.0.0.0,修改文件路径:~/.pyenv/versions/3.8.20/lib/python3.8/site-packages/scrapyd/default_scrapyd.conf
    在这里插入图片描述
  • 然后服务器增加6800端口,就可以在本地打开了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月镇灵将

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值