type
Post
status
Published
summary
虚拟环境的作用就是将不同项目所需的环境进行隔离,互不影响。虚拟环境的管理有很多方法,最常用的是使用condo来管理虚拟环境。
slug
date
Apr 17, 2020
tags
虚拟环境
python基础
category
基础知识
password
icon
URL
Property
Apr 19, 2023 12:51 PM
一、为什么使用虚拟环境
- 不同项目可能使用的python版本不一样
- 不同项目使用的第三方包的版本可能也不一样
虚拟环境的作用就是将不同项目所需的环境进行隔离,互不影响。
二、虚拟环境配置和使用
推荐阅读:最全的Python虚拟环境使用方法
2.1、使用virtualenv
1. 使用pip
pip install virtualenv
2. 创建运行环境
virtualenv [虚拟环境名称] virtualenv venv #如果不想使用系统的包,加上–no-site-packeages参数 virtualenv --no-site-packages 创建路径名
3. 激活环境
linux:
$ cd venv $ source ./bin/activate
Windows 10:
> cd venv > .\Scripts\activate.bat
4. 退出环境
linux:
$ deactivate
Windows 10:
> .\Scripts\deactivate.bat
5. 删除环境
没有使用virtualenvwrapper前,可以直接删除venv文件夹来删除环境
6. 使用环境
进入环境后,一切操作和正常使用python一样 安装包使用
pip install 包
2.2、使用Virtualenvwrapper
Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做: - 将所有虚拟环境整合在一个目录下 - 管理(新增,删除,复制)虚拟环境 - 快速切换虚拟环境
1. 安装
# on Windows pip install virtualenvwrapper-win # on macOS / Linux pip install --user virtualenvwrapper # then make Bash load virtualenvwrapper automatically echo "source virtualenvwrapper.sh" >> ~/.bashrc source ~/.bashrc
2. 创建虚拟环境
# on macOS/Linux: mkvirtualenv --python=python3.6 venv # on Windows mkvirtualenv --python=python3 venv
3. 激活环境
workon #列出虚拟环境列表 workon [venv] #切换环境
4. 退出环境
deactivate
5. 删除环境
rmvirtualenv venv
6. 其他有用指令
pip freeze #查看当前安装库版本 #创建 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表 #保持部署相同,一键安装所有包 pip install -r requirements.txt pip freeze > requirements.txt lsvirtualenv #列举所有的环境 cdvirtualenv #导航到当前激活的虚拟环境的目录中,相当于pushd 目录 cdsitepackages # 和上面的类似,直接进入到 site-packages 目录 lssitepackages #显示 site-packages 目录中的内容
2.3、 使用conda管理
conda包管理工具有anaconda、miniconda、miniforge;前两个个人使用是免费的,miniforge是社区开源免费的。
如果同时安装了miniconda和miniforge,则可以通过以下方法进行conda命令的切换:
从 miniforge 到 anaconda /Users/ayd/opt/miniconda3/bin/conda init zsh 从 anaconda 到 miniforge /Users/ayd/miniforge3/bin/conda init zsh 注:执行完上述切换命令之后记得重启 shell 才能成功切换(在vscode中需要手动中断中断(重新加载页面不管用))
conda可以直接创建不同python版本的虚拟环境。前面讲的virtualenv只是指定创建不同python版本的虚拟环境,前提是你的电脑上已经安装了不同版本的python,与conda相比没有conda灵活。
1. 安装
下载anaconda安装的python直接可以使用conda工具
更新congda
conda update -n base -c defaults conda
2. 创建虚拟环境
创建不同的python版本,直接写出版本号就好了,还可以同时安装想要的库。
创建虚拟环境时最好先指定python的版本,不然默认最新版本
conda create -n envname # 可能会创建空的环境(没有python,没有其他包) conda create -n envname python=3.7 # 指定python版本 conda create -n envname python=3.7 -c conda-forge # 增加镜像源路径 # arm64的mac不能安装3.8之前的python虚拟环境(镜像源中没有3.7之前的python包,换其他源也没有) # -c conda-forge的意思是新增以下两个路径去搜索python包 - https://conda.anaconda.org/conda-forge/osx-arm64 - https://conda.anaconda.org/conda-forge/noarch # 原路径是 - https://repo.anaconda.com/pkgs/main/osx-arm64 - https://repo.anaconda.com/pkgs/main/noarch - https://repo.anaconda.com/pkgs/r/osx-arm64 - https://repo.anaconda.com/pkgs/r/noarch # 有时候创建的虚拟环境没有 pip 等基础工具,这时我们在创建虚拟环境的时候可以直接指定我们需要的工具和版本,等环境创建好之后就直接安装好了。 conda create -n autoOffice pip=22.3.1
3. 激活虚拟环境
conda activate envname
4. 退出虚拟环境
# 不用加虚拟环境名字 conda deactivate
5. 删除虚拟环境
# 删除一个已有环境 conda remove -n venv --all
6. 其他有用指令
# 列出系统存在虚拟环境 conda info -e conda env list # 查看当前环境下已安装的包 conda list # 查看某个指定环境的已安装包 conda list -n venv # 查找package信息 conda search numpy # 克隆一个不同名字、但包相同的环境 conda create --name <NewName> --clone <OldName> # 安装package conda install -n venv numpy # 指定虚拟环境name安装numpy,如果是进入到虚拟环境内部可以不指定name,也可以通过-c指定通过某个channel安装 conda install --yes --file requirements.txt # 批量安装 # 下面这几个命令没试过, # 安装txt文件中的包;如果requirements.txt中的包不可用,则会抛出“无包错误” while read requirement; do conda install --yes $requirement; done < requirements.txt # while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt # 在conda命令无效时使用pip命令来代替 pip install -r requirements.txt # 更新package conda update -n venv numpy # 删除package conda remove -n venv numpy
2.4、 使用pipenv管理
pipenv是Python官方推荐的包管理工具。 它综合了 virtualenv , pip 和 pyenv 三者的功能。能够自动为项目创建和管理虚拟环境。如果你使用过requests库,就一定会爱上这个库,因为是同一个大神出品。 pipenv使用 Pipfile 和 Pipfile.lock 来管理依赖包,并且在使用pipenv添加或删除包时,自动维护 Pipfile 文件,同时生成 Pipfile.lock 来锁定安装包的版本和依赖信息,避免构建错误。相比pip需要手动维护requirements.txt 中的安装包和版本,具有很大的进步。
1. 安装
pip install pipenv
2. 创建虚拟环境
$ cd myproject $ pipenv install # 创建环境 $ pipenv install requests # 或者直接安装库
如果不存在pipfile,会生成一个pipfile,并且如果有的库添加会自动编辑该文件,不会我们手动更新requirements.txt文件了。
3. 激活Pipenv Shell
$ pipenv shell $ python --version
三、vscode选择虚拟环境
- command + shift + P
- python:select interpreter
- 选择特定虚拟环境
四、虚拟环境的包转移
4.1、使用.txt文件转移
4.1、导出
通常情况下,我们一般使用以下命令导出 虚拟环境中的三方包:
pip freeze > requirements.txt
使用上述方法的话,有时导出的依赖会包含 @file 路径,如果继续使用
pip install -r requirements.txt
命令来安装这些依赖的话会报错;所以在导出三方包的时候可以使用一下命令:
pip list --format=freeze > requirements.txt
注意:使用上述命令时,会将
distribute
, pip
, setuptools
和 wheel
也一并导出,建议手动删除上述四个依赖。4.2、安装
在其他环境安装
requirements.txt
中的包时,可以使用pip方法pip install -r requirements.txt
也可以使用conda方法:
conda install --yes --file requirements.txt
详细使用教程草考: 使用conda安装requirement.txt指定的依赖包
4.3、使用.yml文件方式转移
将旧环境的包打包成.yml文件
conda env export > freeze.yml
用.yml文件创建新环境
conda env create -n spider1 -f freeze.yml
- 作者:AnJhon
- 链接:https://www.anjhon.top/article/fc019c6e-d3d3-49eb-9675-441f7121d0f3
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。