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

news2025/4/16 16:08:12

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

  • pyenv概述
  • virtualenv、pyvenv、pyenv
    • virtualenv
    • pyvenv
    • pyenv
  • Ubuntu端安装pyenv实践
    • 安装依赖
    • 报错解决
    • 安装pyenv
    • 配置环境变量
    • 更换pyenv源地址
  • pyenv基本用法
  • 安装成功
  • 服务器部署scrapyd

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端口,就可以在本地打开了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CS5346 - Annotation in Visualization (可视化中的注释)

文章目录 Annotation 的重要性Levels of Annotation (注释的层级)Headings and IntroductionHeadings(标题)陈述型(Statement):突出结论或有趣发现疑问型(Question)&…

如何开发一套场外个股期权交易系统?个股期权交易软件包含:询价,报价,交易,持仓,行权,账户盈亏统计等

一、场外个股期权的定义与特点 场外个股期权(Over-the-Counter Equity Option)是一种由交易双方私下协商的非标准化金融衍生品合约,以特定个股为标的资产。与交易所上市的标准化期权不同,其合约条款(如行权价、到期日…

高速电路中的电阻、电容的选型及应用

2.1 电阻的应用 2.1.1 与电阻相关的经典案例 如果说芯片是电路的骨架,那么电阻就是在芯片之间起连接作用的关节。电阻的阻值、布放位置等,对设计的成功起着至关重要的作用。 【案例2.1】串联电阻过大,导致板间告警失败 某产品由业务板和主…

六、adb通过Wifi连接

背景 收集是荣耀X40,数据线原装全新的,USB连上之后,老是断,电脑一直叮咚叮咚的响个不停,试试WIFI 连接是否稳定,需要手机和电脑用相同的WIFI. 连接 1.通过 USB 连接手机和电脑(打开USB调试等这些都略过) adb device…

‌DeepSeek模型在非图形智能体的应用中是否需要GPU

答:不一定 概念 1、是否需要GPU与应用是否图形处理应用无关 2、文本内容智能体大多也需要GPU来提供更好的性能 3、‌DeepSeek模型在非图形智能体的应用中是否需要GPU取决于具体的模型版本和部署环境 不需要GPU的模型版本 ‌DeepSeek-R1-1.5B‌: 这…

4.14代码随想录第四十三天打卡

图论理论基础 https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 98. 所有可达路径 (1)题目描述: (2)解题思路: #include <iostream> #include <vector> #include <list> using namespace std;vec…

【视频目标分割论文集】Efficient Track Anything0000

github 摘要 视频对象分割和追踪任意目标领域出现了强大的工具——分割任意模型 2&#xff08;SAM 2&#xff09;。SAM 2 实现令人印象深刻的视频对象分割性能的关键组成部分包括用于帧特征提取的大型多阶段图像编码器&#xff0c;以及存储过去帧记忆上下文以辅助当前帧分割的…

码率自适应(ABR)决策的直播场景

直播场景 1. 直播场景的普遍框架与工作原理 主播端&#xff1a;即各类主播&#xff08;游戏、网红歌手、户外达人等&#xff09;&#xff0c;通过手机端或者个人电脑在线直播录制个人活动。 编码服务器&#xff1a;主播端上传视频流以后&#xff0c;编码服务器根据相应的编码转…

SCP-Firmware安全通告:CVE-2024-11863和CVE-2024-11864

安全之安全(security)博客目录导读 目录 一、概述 二、CVE详情 三、受影响产品 四、修复建议 五、致谢 六、版本历史 一、概述 在SCP固件(SCP-Firmware)中发现两处安全漏洞&#xff0c;可能允许普通世界特权软件&#xff08;normal world privileged software&#xff…

双按键控制LED(中断优先级)

1.启动时&#xff0c;两个LED灯熄灭&#xff0c;1秒钟后&#xff08;定时器实现&#xff09;&#xff0c;LED自动点亮&#xff1b; 2.按键1按下后&#xff0c;通过中断int0把两个LED熄灭5s时间&#xff0c;int0优先级设置为最高&#xff08;优先级必须设置&#xff0c;设置后才…

(四)机器学习---逻辑回归及其Python实现

之前我们提到了常见的任务和算法&#xff0c;本篇我们使用逻辑回归来进行分类 分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机场贝叶斯层次聚类隐马尔可夫模型支持向量机高…

代码随想录第17天:二叉树

一、二叉搜索树的最近公共祖先&#xff08;Leetcode 235&#xff09; 由于是二叉搜索树&#xff0c;节点的值有严格的顺序关系&#xff1a;左子树的节点值都小于父节点&#xff0c;右子树的节点值都大于父节点。利用这一点&#xff0c;可以在树中更高效地找到最低公共祖先。 c…

面试篇 - GPT-1(Generative Pre-Training 1)

GPT-1&#xff08;Generative Pre-Training 1&#xff09; ⭐模型结构 Transformer only-decoder&#xff1a;GPT-1模型使用了一个12层的Transformer解码器。具体细节与标准的Transformer相同&#xff0c;但位置编码是可训练的。 注意力机制&#xff1a; 原始Transformer的解…

【从零实现高并发内存池】内存池整体框架设计 及 thread cache实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…

3.6 函数图像描绘

1.函数描图步骤 2.渐进性 2.1 水平渐进线 2.2 垂直渐进线 2.3 斜渐近线 3.作图

电商中的订单支付(内网穿透)

支付页面 接口文档 Operation(summary"获取订单信息") GetMapping("auth/{orderId}") public Reuslt<OrderInfo> getOrderInfo(Parameter(name"orderId",description"订单id",requiredtrue) PathVaariable Long orderId){OrderI…

ESP32开发之ubuntu环境搭建

1. 在Ubuntu官网下载Ubuntu server 20.04版本https://releases.ubuntu.com/20.04.6/ 2. 在vmware下安装Ubuntu 3. 改Ubuntu静态IP $ sudo vi /etc/netplan/00-installer-config.yaml# This is the network config written by ‘subiquity’ network: renderer: networkd eth…

2025年,HarmonyOS认证学习及考试

HarmonyOS应用开发者认证考试 基础认证 通过系统化的课程学习&#xff0c;熟练掌握 DevEco Studio&#xff0c;ArkTS&#xff0c;ArkUI&#xff0c;预览器&#xff0c;模拟器&#xff0c;SDK 等 HarmonyOS 应用开发的关键概念&#xff0c;具备基础的应用开发能力。 高级认证…

空间信息可视化——WebGIS前端实例(一)

技术栈&#xff1a;原生HTML 源代码&#xff1a;CUGLin/WebGIS: This is a project of Spatial information visualization 4 全国贫困县可视化系统 4.1 系统设计思想 党的十九大报告明确指出,要“确保到2020年我国现行标准下农村贫困人口实现脱贫,贫困县全部摘帽,解决区域…

10.第二阶段x64游戏实战-添加计时器

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;9.第二阶段x64游戏实战-创建项目代码获取人物属性 效果图&#xff1a; 当前游戏…