『折腾指北』Python 开发环境管理

您所在的位置:网站首页 python如何删除项目的虚拟环境文件内容 『折腾指北』Python 开发环境管理

『折腾指北』Python 开发环境管理

2024-07-09 05:46:28| 来源: 网络整理| 查看: 265

题图由 Stable Diffusion 生成。本文旨在提供一个虚拟环境管理方式参考,所提供的虚拟环境管理方式经过作者测试,证实有效。网上这么多 Python 虚拟环境管理的文章或者教程,本文有何存在的必要:第一个原因是,网上提供的教程很多只提供了单一的虚拟环境管理工具,作者由于喜欢折腾,尝试过不同的工具,可以提供一些比较意见供参考。第二个原因是作者折腾过不同的系统,提供的经验适用于 Windows 10/11, Ubuntu 和 Windows Subsystem for Linux (WSL 2).本文不是很友好的新手教程,读者需要有一定的基础,文中使用的一些工具,如 Windows PowerShell 和 Bash,需要读者有一定的了解。本文按如下脉络进行,首先介绍为什么需要进行虚拟环境管理,然后介绍了作者使用过的几种虚拟环境管理实例,最后提供了一些延申参考。由于作者非计算机科班,文章内容只是自己的经验,所以不可避免带有作者的狭隘偏见。引言:为什么需要进行虚拟环境管理

Python 开发环境管理分为两部分,一个是 Python 版本管理,一个是虚拟环境管理。

很多时候受限于我们的项目依赖,在开发不同的项目时需要用到不同的 Python 版本,例如 TensorFlow 2.10 就只能支持 3.7-3.10 的 Python 版本,但是最新版的 TensorFlow 就支持最新的 Python 3.11. 作者由于同时使用 TensorFlow 和 PyTorch 两个深度学习框架,就在电脑上安装了三个 Python 版本。

如果我们不使用虚拟环境管理的话,我们所有的包都会安装在系统全局 Python (Global Python, 也就是系统默认的 Python 版本) 的目录下,这会导致两个问题:

第一个是由于在同一个目录下只能安装某一个包的一个版本,如果有两个项目对同一个依赖包有不同的版本需求,就会导致依赖冲突,给开发带来问题。第二个是,哪怕没有依赖冲突的问题,所有的依赖包安装在同一个目录下,会导致导出的依赖文件过于冗余,这在进行项目开源的时候是非常忌讳的(当然这个问题也存在简单的解决方法)。

基于上述两个原因,Python 开发环境管理的最佳实践是为不同的项目建立不同的虚拟环境。为了满足项目依赖对于 Python 版本的要求,我们在建立虚拟环境的时候,就需要指定 Python 版本,具体指定 Python 版本的方法会在下面的不同实践中具体介绍。

虚拟环境管理最佳实践(以 virtualenv 为例)利用 Python 自带的 venv 管理虚拟环境

利用 Python 自带的 venv 管理虚拟环境有两个主要的问题:

创建虚拟环境的时候无法指定 Python 的版本。使用 venv 的时候需要指定路径,比较麻烦。

基于上述两个原因,我很快就弃用了 venv。由于作者使用的时间太短,关于 venv 的介绍和详细使用,可以参考少数派站内的两篇文章。

  

关于 virtualenv,作者在查资料的时候发现二者同源,是 venv 的超集,所以对它也完全没有尝试。

利用 Miniconda/Anaconda 同时管理 Python 版本和虚拟环境

Miniconda 和 Anaconda 都打包了 Conda 这一包管理器,二者的区别在于,Miniconda 里面只包含了 Conda、Python 和一些必备的包,是最小的 Conda 安装环境;而 Anaconda 则提供了很多额外的数据科学或者机器学习的依赖包,例如安装完成之后就可以使用 Python 的IDE Spyder,导致其安装包非常臃肿。

由于 Anaconda 中的很多工具包我们都用不上,所以建议直接 Miniconda,遇到需要的依赖的时候直接安装即可。

由于 Windows 系统没有自带 Python 安装,所以如果直接安装 Miniconda / Anaconda,系统的默认 Python 版本就会是 Miniconda / Anaconda 的 Python 版本。

Windows下载并安装 Miniconda / Anaconda,只需要按照安装提示完成安装即可,安装过程中需要注意的是添加到系统环境变量中的这一步,建议将其添加到系统环境变量(Anaconda 官方安装教程)。创建虚拟环境conda create -n venv_name python=3.11 # 创建虚拟环境并指定 Python 版本 conda activate venv_name # 激活虚拟环境 conda deactivate # 离开虚拟环境Ubuntu/WSL

由于 Ubuntu/WSL 在 Terminal 里操作非常方便,流程和 Windows 中相同,只是以命令行的形式进行,故而提供完整的命令行参考。

sudo apt update && sudo apt upgrade sudo apt install wget wget https://repo.anaconda.com/miniconda/Miniconda3-py311_23.5.2-0-Linux-x86_64.sh # 下载 Miniconda 安装文件 sh ./Miniconda3-py311_23.5.2-0-Linux-x86_64.sh # 安装 Miniconda,需要同意用户协议 conda create -n venv_name python=3.11 # 创建虚拟环境并指定 Python 版本 conda activate venv_name # 激活虚拟环境利用 Pyenv 管理 Python 版本,Pipenv 管理虚拟环境Windows通过 Windows PowerShell 安装 Pyenv,然后重启电脑Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1" pyenv --version # 查看 Pyenv 的版本利用 Pyenv 安装指定版本的 Python,设置默认版本 Python (Global Python)pyenv install -l # 查看可以安装的 Python 列表 pyenv install 3.9.13 pyenv install 3.11.1 pyenv versions # 查看电脑中已安装 Python 版本 pyenv global 3.11.1 # 设置默认版本 Python pyenv version # 查看默认版本 Python设置完 Global Python 后,需要将默认版本 Python 添加到系统环境变量中,否则在使用 Pipenv 时会报错:C:\Users\*****\AppData\Roaming\Python\Python311\Scripts # 如果不添加到环境变量,使用 Pipenv 时会报此错误 pipenv : 无法将“pipenv”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。安装 Pipenvpip install pipenvPipenv 创建虚拟环境cd project_dir # 切换到项目文件夹 pipenv install --python 'C:\Users\*****\.pyenv\pyenv-win\versions\3.9.13\python39.exe’ # 创建虚拟环境,此时可以指定 Python 版本 pipenv shell # 启动虚拟环境 pipenv install package # 安装需要的包 exit # 离开虚拟环境

这里需要注意的是,虽然创建虚拟环境是在项目文件夹,但是不同项目的虚拟环境都在同一个目录下管理,不像  venv 会在项目文件夹下。

常用命令pipenv install package # 安装 pipenv uninstall package # 卸载 pipenv graph # 查看按照包的依赖关系 pipenv --venv # 查看虚拟环境执行文件路径 pipenv --rm # 移除虚拟环境Ubuntu/WSL

在 Ubuntu/WSL 中使用 Pyenv 和 Pipenv 的流程还是和 Windows 下相同,所以还是提供完整的命令行参考。

首先安装 Pyenvgit clone https://github.com/pyenv/pyenv.git ~/.pyenv echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc exec "$SHELL"利用 Pyenv 安装指定版本的 Python,设置默认版本 Python (Global Python)# Installing libraries that need for installing Python sudo apt-get 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 # Installing Python pyenv install 3.9.13 pyenv install 3.11.1 pyenv versions # 查看电脑中已安装 Python 版本 pyenv global 3.11.1 # 设置默认版本 Python pyenv version # 查看默认版本 Python安装 Pipenvpip install pipenv # 使用 pip3 安装 pipenv export PATH="/home/user/.local/bin:$PATH" # 添加路径到 PATH echo "${PATH//:/$'\n'}" # show path one directory per line 利用 Pipenv 创建虚拟环境cd project_dir pipenv install --python 3.9 # 不用指定 Python 路径 pipenv shell # 启动虚拟环境 pipenv install package # 安装需要的包 exit # 离开虚拟环境

到这里可以总结一下,利用 Miniconda/Anaconda 管理开发环境和利用 Pyenv 和 Pipenv 管理开发环境的一个小小的区别:利用 Miniconda/Anaconda 建立虚拟环境的时候,我们指定的 Python 是在此时安装或者确认的,也就是一步到位;利用 Pipenv 建立虚拟环境的时候,我们是需要在已经安装了指定 Python 版本的基础上指定本地 Python 版本,基于此版本的 Python 来建立的虚拟环境,也就是分两步走。

延申:IDE中使用虚拟环境VS Code 中使用虚拟环境

Using Python Environments in Visual Studio Code

PyCharm 中使用虚拟环境

Configure a virtual environment | PyCharm Documentation (jetbrains.com)

在 Neovim 中使用虚拟环境是作者计划中的下一篇文章。


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭