课 程 推 荐 我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优 质 资 源 下 载 :👉👉 资源下载合集 👈👈 优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集 👈👈 .
Python项目虚拟环境超详细讲解
- 虚拟环境
- Python项目虚拟环境
- 虚拟环境管理工具
- 常用虚拟环境管理工具
- pyenv-win 多环境管理工具
- virtualenv管理工具
- virtualenvwrapper 集中式虚拟环境管理
- pipenv 基于项目的虚拟环境管理
- conda管理工具
- Anaconda使用
- 安装第三方库注意事项
虚拟环境
Python项目虚拟环境
-
首先我们需要了解一下系统解释器
-
系统解释器
- 在python官网下载了python解释器(实际上就是一个软件)
- 将下载好的python解释器安装在
D:\Python39
目录下 - 那么,在这个目录下就会生成一系列的文件,下面我们了解一下最主要的几个内容
D:\Python39 - python.exe - Scripts - pip.exe - pip3.exe - pip3.9.exe - Lib - random.py - re.py - json.py - site-packages - requests.py
- 这就是我们的系统解释器
- 在我们的电脑上,同时可以安装多个版本的系统解释器(如:python3.8,python3.9,python3.10)
D:\Python38 - python.exe - Scripts - pip.exe - pip3.exe - pip3.8.exe - Lib - random.py - re.py - json.py - site-packages - requests.py # ---------------------------------------- D:\Python39 - python.exe - Scripts - pip.exe - pip3.exe - pip3.9.exe - Lib - random.py - re.py - json.py - site-packages - requests.py # ---------------------------------------- D:\Python310 - python.exe - Scripts - pip.exe - pip3.exe - pip3.10.exe - Lib - random.py - re.py - json.py - site-packages - requests.py
- 环境变量的配置
- 我们的电脑可以安装多个版本的解释器
- 但是,我们在日常开发中会选择一个系统解释器作为主运用的解释器
- 我们就会将这个版本的解释器的目录添加到环境变量中
D:\Python39 D:\Python39\Scripts\
- 那么,我们就可以在cmd终端中直接用python来调用解释器
- 实际就是通过环境变量中的
D:\Python39
路径来找到python.exe
- 在cmd中运行
pip install
安装第三方模块 - 实际就是通过环境变量中的
D:\Python39\Scripts\
路径来找到pip.exe
- 项目开发
- 我们在前期学习的过程中,可能需要安装很多第三方模块
- 如:
# 安装2.1版本的requests pip install requests==2.1 # 安装0.9版本的flask pip install flask==0.9 # 安装2.9版本的bs4 pip install bs4==2.9 ...
- 通过这种方式安装的话,这些第三方模块就安装在系统解释器所在目录的
Lib >> site-packages
目录下了 - 当我们学习完了之后,开始接项目了
- 项目1:京东抢茅台
- 这个项目可能只需要用到 requests 模块,那么此时我们就不需要再安装 requests 模块了,可以直接使用系统解释器目录下的 requests 模块
1. >>> 写代码 2. >>> 通过系统解释器直接运行
- 项目2:二开天猫抢茅台
- 这个项目是之前别人已经开发完毕,现在需要再次更新。
- 拿到别人所写的代码之后,发现项目中用的requests模块是1.3版本的
- 那么我们现在直接运行代码,有可能会运行不成功。因为我们的系统解释器中安装的是2.1版的requests,项目是基于1.3版本开发的
- 此时我们就需要先删除原有的2.1版本,重新安装1.3版本的requests
- 同一个解释器下不允许安装同一个第三方模块的多个版本
# 安装1.3版本的requests pip install requests==1.3
- 问题来了:此时天猫抢茅台项目能正常运行了,但是京东抢茅台的项目又无法运行了,又需要卸载当前版本的requests,再安装2.1版本的requests
- 当我们所做的项目越来越多的时候,所用到的第三方模块也越来越多,我们总不能每运行一个项目就重装一遍第三方模块
- 有些人可能会想到,一台电脑可以安装多个版本的解释器,是否可以每个项目都使用不同的系统解释器呢?当然,当项目少的时候可以这么干,但是项目多起来之后呢?
- 而且项目做的越来越多,安装的第三方模块也越来越多,总不能每个项目都将以往所安装的所有第三方模块都打包给对方吧
- 这个时候,就可以使用虚拟环境了…
- 虚拟环境理论
- 概念:基于系统解释器,虚拟出来一个相同版本的python解释器
- 虚拟出来的python解释器结果如下
E:\Projecs\PyQt5\venv - python.exe - Scripts - pip.exe - Lib - site-packages
- 此时这个虚拟出来的解释器的Lib目录下,不再有python自带的内置模块了,而是直接使用系统解释器中的
- 项目1:PyQt5开发
-
我们的项目结构如下:
-
当我们需要安装第三方模块到这个目录下时,需要执行以下语句
E:\Projecs\PyQt5\venv\Scripts\pip.exe install pyqt5
-
- 项目2:ArtCopy开发
-
我们的项目结构如下:
-
当我们需要安装第三方模块到这个目录下时,需要执行以下语句
E:\Projecs\ArtCopy\venv\Scripts\pip.exe install cx-Oracle==8.3.0
-
- 虚拟环境实战(PyCharm)
- 通过PyCharm创建项目,并配置虚拟环境
-
新建项目
-
配置虚拟环境
- 虚拟环境目录一般放在项目目录内,方便后期项目结束之后删除项目的同时就将虚拟环境一同删除了。不再需要额外去删除虚拟环境了
- 虚拟环境路径中不能有中文,否则会导致虚拟环境失效
-
配置完成后,项目目录如下
- 此时,site-package目录里面的都是pip工具相关,还没有任何第三方模块
-
环境已经有了,那么我们写一句简单的代码运行一下
print('Holle World!')
- 程序运行命令
E:\Projecs\pro001\.venv\Scripts\python.exe E:/Projecs/pro001/demo.py # 通过 E:\Projecs\pro001\.venv\Scripts\ 目录下的 python.exe 解释器, # 编译 E:/Projecs/pro001/ 目录下的 demo.py 文件
- 程序运行命令
-
安装第三方模块
- 按正常逻辑,我们需要执行以下语句才能将第三方模块安装在这个虚拟环境中
E:\Projecs\pro001\.venv\Scripts\pip install requests==2.1
- 但是,我们每次在这个虚拟环境下安装第三方模块,都需要把虚拟环境的路径全部写下来,是非常麻烦的
- 按正常逻辑,我们需要执行以下语句才能将第三方模块安装在这个虚拟环境中
-
PyCharm自动激活虚拟环境(进入到虚拟环境目录下)
-
自动激活前提:项目和虚拟环境进行了绑定
-
PyCharm —— Terminal
-
注意:windows系统有Windows PowerShell 和 Cmd两种命令行程序。
-
Windows系统中,PyCharm默认使用的是Windows PowerShell,需要修改为CMD命令行程序
-
Windows PowerShell命令行程序无法激活虚拟环境
-
修改之前,无法激活虚拟环境
-
修改命令行程序:
File —— Settings... —— Tools —— Terminal —— Shell path —— 选择CMD
-
修改之后,重新打开项目:成功激活虚拟环境
-
-
安装第三方模块
- 虚拟环境激活之后,再安装第三方模块就不需要写虚拟环境的全路径了
pip install requests==2.1
- PyCharm默认的安装源是:https://pypi.python.org/simple
- 安装速度非常缓慢,我们可以修改为国内的源
- 虚拟环境激活之后,再安装第三方模块就不需要写虚拟环境的全路径了
-
修改安装源
- 常用国内源
清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/ 豆瓣源:http://pypi.douban.com/simple/ 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/ 华中科技大学:http://pypi.hustunique.com/ 腾讯源:http://mirrors.cloud.tencent.com/pypi/simple 华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/
- 修改安装源
File —> settings —> Project:PycharmProjects —> Python Interpreter —>点击加号 —> 左下角 Manager Repositories —— 点-删除官方源,点+增加国内镜像源
- 常用国内源
-
第三方包收集和安装
-
当项目开发完毕之后,要把项目发给小明。小明需要运行
-
我们发送项目的时候,不要把venv文件(虚拟环境)发送给小明
-
因为我们的虚拟环境,是基于我们的系统解释器虚拟出来的
-
小明的系统解释器目录和我的可能不一样,就会导致虚拟环境无法使用
-
那么,小明怎么知道项目中所用到的第三方模块和对应的版本呢?
-
此时,我们就需要将第三方模块和版本进行收集
1. 激活虚拟环境 2. 执行 pip freeze > requirements.txt # 把当前激活的虚拟环境下,所有已经安装的第三方模块全部收集起来,记录在requirements.txt文件中
-
小明运行程序的时候需要安装项目所需要的第三方模块
-
打开项目:Open
-
提示我们创建虚拟环境
-
文件requirements.txt包含项目依赖项。您想要使用它创建一个虚拟环境吗
-
这样,虚拟环境就自动配置好了,并且所需要的第三方模块也全部自动下载安装好了
-
-
-
如果上面的创建虚拟环境被我们直接关闭了,那我们就需要手动添加虚拟环境并安装第三发模块
-
手动添加虚拟环境
File —— Settings... —— Project: xxxx —— Python Interpreter —— 右侧设置,Add —— 设置虚拟环境目录和基于系统解释器
-
根据requirements.txt文件安装第三方模块
- pycharm —— Terminal —— 激活虚拟环境
pip install -r requirements.txt
- 打开Terminal,无法激活虚拟环境的时候,需要检查一下当前项目是否与虚拟环境绑定了
File —— Settings... —— Project: xxxx —— Python Interpreter —— 右侧 Python Interpreter
- 点击下拉箭头,选择当前项目下虚拟环境目录下的python解释器
- pycharm —— Terminal —— 激活虚拟环境
-
-
-
系统解释器文档
- requirements.txt和代码中无法体现解释器的版本
- 一般我们都是通过文档来记录一些说明
- 在项目中创建一个readme.md文件来记录python解释器版本和其他一些内容
- readme.md文档
项目基于python 3.9 开发
虚拟环境管理工具
常用虚拟环境管理工具
- virtualenv
- virtualenv是一个第三方的Python虚拟环境管理工具,可以在Python 2和Python 3上使用。它提供了更多的功能和选项,例如可以指定Python解释器版本、创建基于现有环境的虚拟环境等。
- 虚拟环境之间切换比较麻烦(需要分别进入到每个虚拟环境的Scripts目录,通过activate激活)
- virtualenvwrapper
- virtualenvwrapper是一个基于virtualenv开发的一个工具包,用于管理Python虚拟环境的第三方工具,它提供了一组命令和功能,使得创建、切换和删除虚拟环境更加方便
- 会将虚拟环境创建在特定的文件中(windows系统,默认在用户目录的Envs文件夹中)
- pipenv
- pipenv可以看做是pip和virtualenv的组合体,基于Pipfile和Pipfile.lock,更好地管理包之间的依赖关系
- 会将虚拟环境创建在特定的文件中(windows系统,默认在用户目录的.virtualenvs文件夹中)
- conda
- conda是一个流行的开源虚拟环境和包管理工具,适用于Python和其他编程语言。它可以创建、激活和管理虚拟环境,并提供了强大的包管理功能,可以方便地安装、更新和删除包。
- 会将虚拟环境创建在特定的文件中(windows系统,默认在用户目录的.conda\envs文件夹中)
- pyenv
- pyenv是python的多环境管理工具,可以安装多个版本的python,并为全局或单个应用设置指定版本
- pyenv-win是pyenv的windows版本,在windows系统上管理python版本的工具。使用pyenv-win,可以方便地安装、管理和切换各种python版本,而无需手动更改系统环境变量
- 轻量级的python版本管理工具,相比于Anaconda,体积更为小巧,并且还提供了虚拟环境的支持,可以为不同的项目创建独立的python环境,从而避免不同项目之间的依赖冲突
pyenv-win 多环境管理工具
-
下载地址:https://github.com/pyenv-win/pyenv-win#readme
-
点击 code,再点击 Download ZIP 下载压缩包
-
安装管理工具
- 将
pyenv-win-master.zip
压缩包解压到不带中文的目录下,并将文件夹名称重命名为pyenv
- 将
-
配置环境变量
- 计算机——属性——高级系统设置——高级——环境变量——将路径添加到系统变量的path变量中
- 添加路径
D:\Pyenv\pyenv-win\bin D:\Pyenv\pyenv-win\shims # 这里的D:\Pyenv\是文件存放路径
-
常用命令
commands # 列出所有可用的pyeny命令 versions # 列出pyenv可用的所有Python版本 install --list # 查看pyenv-win支持的python版本列表 install # Python构建安装Python版本 uninstall # 卸载特定的Python版本 vname # 显示当前的Python版本 version # 显示当前Python版本及其来源 version-name # 显示当前的Python版本 exec # 通过首先准备路径来运行可执行文件,以便选定的Python which # 显示可执行文件的完整路径 whence # 列出包含给定可执行文件的所有Python版本 local # 设置或显示本地特定于应用程序的Python版本 global # 设置或显示全局Python版本 duplicate # 创建一个重复的python环境 shell # 设置或显示特定于shell的Python版本 update # 更新缓存的版本数据库 rehas # 重新安装pyenv垫片(安装可执行文件后运行此操作)
- 查看pyenv-win支持的python版本列表:
pyenv install --list
- 查看当前python对应版本:
pyenv version
- 查看电脑安装的所有python版本:
pyenv versions
- 安装指定版本(也可以在一个命令中安装多个版本):
# 一个命令安装一个版本 pyenv install <version> # 在一个命令中安装多个版本 pyenv install <version> <version>
- 卸载指定版本:
pyenv uninstall <version>
- 将python版本设置为全局版本(默认使用的python版本) 注意:必须先安装该版本。
pyenv global <version>
- 设置本地版本(当在此文件夹中调用python时,都会使用给定的版本。)
# 注意:必须先安装该版本 pyenv local <version>
- 查看python版本来核对:
python -V
- 查看pyenv-win支持的python版本列表:
virtualenv管理工具
- 官方文档:https://virtualenv.pypa.io/en/latest/
- 用户指南:https://virtualenv.pypa.io/en/latest/user_guide.html
- 安装管理工具
pip install virtualenv # 需要将virtualenv库装在哪个python环境,就将cmd切换目录到python安装路径下的Scripts目录 # 如: # cd D:\Python\Python39\Scripts # pip install virtualenv
- 语法
virtualenv -p python解释器路径 env_name # -p python解释器路径 # 虚拟环境使用指定版本的python解释器 # 例:virtualenv -p D:\Python\Python39\python.exe env # --system-site-packages # 指定虚拟环境继承系统的三方库 # 添加这个参数:检索库的时候,在当前虚拟环境找不到,会到系统的三方库中查找 # 不加这个参数:检索库的时候,只会在当前的虚拟环境中查找 # 例:virtualenv --system-site-packages env # 注意:通过系统python环境创建虚拟环境的时候,并不会将系统python环境中安装的第三方库安装到虚拟环境中
- 创建虚拟环境
1、创建项目文件夹 2、cmd命令行工具,进入到项目文件夹 3、执行命令: virtualenv env_name # 如:virtualenv env
- 激活虚拟环境
# cmd命令行工具,进入到虚拟环境下的Scripts目录 # 执行命令: activate 或者 activate.bat # 执行之后,可以看到cmd命令工具中的路径前面多了一个标识:(env_name) # 例:(env) C:\Users\Administrator\Desktop\MyPro02\env\Scripts> # 此时,就是进入到了虚拟环境中,接下来所有的操作都是在当前虚拟环境中
- 操作虚拟环境
pip install requests # 如果不激活创建的虚拟环境,库会被安装到全局环境; # 激活虚拟环境后,则会安装在虚拟环境中 python test.py # 使用虚拟环境中的python解释器执行test.py文件 # 如果test.py文件中导入了某个包,会优先到虚拟环境中去查找相关的包
- 退出虚拟环境
# cmd命令行工具,进入到虚拟环境下的Scripts目录 # 执行命令 deactivate 或者 deactivate.bat # 退出虚拟环境之后,cmd命令工具中的路径前面的标识(env_name)会消失
- 删除虚拟环境
直接删除虚拟环境整个文件夹目录
- virtual项目交接
# 方案1: # 连同虚拟环境和项目一起拷贝给别人 # 方案2 # 在虚拟环境中,冻结依赖需求文本 pip freeze > requirements.txt # 把项目和依赖需求文本发给别人 # 别人自己创建虚拟环境,根据依赖需求文本安装相关库 pip install -r requirements.txt
- 注意:项目与虚拟环境的关系是多对多,一个虚拟环境可以用于多个项目,一个项目也可以切换多个虚拟环境。
virtualenvwrapper 集中式虚拟环境管理
- 官方文档:https://pypi.org/project/virtualenvwrapper-win/
- virtualenvwrapper是一个基于virtualenv开发的一个工具包
- virtualenv缺点
- 不便于多个虚拟环境管理
- 虚拟环境之间切换比较麻烦(需要分别进入到每个虚拟环境的Scripts目录,通过activate激活)
- 安装管理工具
pip install virtualenvwrapper-win
- 创建虚拟环境
# 打开cmd命令行工具 # 执行命令 mkvirtualenv env_name # 将虚拟环境创建在特定的文件中(windows系统,默认在用户目录的Envs文件夹中。如:C:\Users\Administrator\Envs) # 虚拟环境创建完成之后,会自动激活当前新建的虚拟环境 # 示例: # mkvirtualenv fzenv1 # mkvirtualenv fzenv2 # mkvirtualenv fzenv3
- 查看所有虚拟环境
# 打开cmd命令行工具 # 执行命令 lsvirtualenv # 本质是执行 dir /b /ad "C:\Users\Administrator\Envs" 命令
- 切换激活虚拟环境
# 打开cmd命令行工具 # 执行命令 workon env_name # 示例 # workon fzenv1 # workon fzenv2
- 退出虚拟环境
# 在激活虚拟环境前提下 # 执行命令 deactivate
- 删除虚拟环境
# 打开cmd命令行工具 # 执行命令 rmvirtualenv env_name # 示例 # rmvirtualenv fzenv1
pipenv 基于项目的虚拟环境管理
- 官方文档:https://docs.pipenv.org/
- pip + env (包管理 + 虚拟环境)
- 更加基于项目,使得我们更加关注与项目管理。工具内部封装了以上两个工具
- virtualenvwrapper缺点
- 虚拟环境操作与包的安装分离了,分别通过virtualenv操作虚拟环境、pip操作三方库
- 项目所依赖的三方包记录需要通过
pip freeze > requirements.txt
手动更新记录,容易造成更新不及时 - 无法记录包之间的依赖关系(如:requests所依赖的包只会直接记录,并不会体现其依赖关系)
- pipenv优势
- 不需要再分别使用pip和virtualenv对包和虚拟环境进行操作,直接使用pipenv即可
- pipenv会自动创建虚拟环境,以及安装三方库
- 会自动记录项目依赖的所有三方库
- 使用pipfile和pipfile.lock取代requirements.txt(好处:做一个环境锁定,可以查看包之间的依赖关系)
- 安装管理工具
pip install pipenv # 查看版本:pipenv --version
- 语法
pipenv [OPTIONS] COMMAND [ARGS]... # 参数说明 # --where # 显示项目文件所在路径 # --venv # 显示虚拟环境下实际文件所在路径 # --py # 显示虚拟环境下Python解释器所在路径 # --envs # 显示虚拟环境的选项变量 # --rm # 删除虚拟环境 # --man # 显示帮助页面 # --three / --two # 使用Python 3或Python 2创建虚拟环境 # --site-packages # 附带安装原Python解释器中的第三方工具包 # --version # 显示版本信息 # -h, --help # 显示帮助信息 # 常用命令 # install # 创建虚拟环境或者安装第三方工具 # shell # 进入虚拟环境 # uninstall # 卸载一个三方库 # update # 卸载当前所有的三方库,并安装它们的最新版本 # open # 在编辑器中查看一个三方库 # lock # 锁定并生成Pipfile.lock文件 # run # 在虚拟环境中执行命令 # check # 检查安全漏洞 # graph # 显示当前依赖关系图信息
- 创建虚拟环境
# 打开cmd命令行工具,进入项目目录 # 执行命令 pipenv install [--python python解释器路径] # 不指定--python参数,则用系统默认python解释器创建虚拟环境 # 将虚拟环境创建在特定的文件中(windows系统,默认在用户目录的.virtualenvs文件夹中。如:C:\Users\Administrator\.virtualenvs) # 示例 # pipenv install # 使用系统默认版本python解释器创建虚拟环境 # pipenv install --python D:\Python\Python39\python.exe # 使用指定版本python解释器创建虚拟环境 #
- 激活虚拟环境
# 打开cmd命令行工具,进入项目目录 # 执行命令 pipenv shell # 注意:shell是激活当前项目的虚拟环境,所以必须先进入到指定项目的目录 # 激活之后,可以看到cmd命令工具中的路径前面多了一个标识:(env_name)
- 操作虚拟环境
# 打开cmd命令行工具,进入项目目录 # 执行命令 # 执行代码 python xxx.py # 安装三方库 pipenv install 包名 # 添加--skip-lock 可以跳过lock步骤 pipenv install 包名 --skip-lock # 等最后再使用pipenv lock统一执行lock操作 # 注意:pipenv install执行 # 1、检测当前项目对应的虚拟环境是否存在,不存在则创建虚拟环境 # 2、在虚拟环境中安装指定的三方库,如果没有指定则只创建虚拟环境不安装三方库(pipenv install) # 3、在项目目录下,通过pipfile和pipfile.lock记录当下已经安装的三方库 # 注意:在虚拟环境中,通过pip install也能安装三方库,但是不会更新pipfile和pipfile.lock文件 # 查看包依赖结构 pipenv graph # 卸载包 pipenv uninstall 包名
- 退出虚拟环境
# 在激活虚拟环境前提下 # 执行命令 exit
- 删除虚拟环境
# 打开cmd命令行工具,进入项目目录 # 执行命令 pipenv --rm
- 项目交接1:通过pipfile和Pipfile.lock文件
# 使用 pipfile和Pipfile.lock 文件 # 1、生成/更新Pipfile.lock文件 pipenv lock # 把当前环境的模块锁定,执行命令后它会更新 Pipfile.lock 文件 # 2、把代码文件、Pipfile 文件和 Pipfile.lock 文件 发给别人 # 3、别人创建项目目录,将代码文件、Pipfile 文件和 Pipfile.lock 文件存放到项目目录 # 创建虚拟环境,同时会自动识别Pipfile和Pipfile.lock文件安装项目依赖的所有三方库 # 打开cmd命令行工具,进入项目目录 # 执行命令 pipenv install
- 项目交接2:通过requirements.txt文件
# 生产环境的依赖导出 pipenv requirements > requirements-pro.txt # 生产环境+开发环境的依赖导出 pipenv requirements --dev > requirements.txt # 开发环境的依赖导出 pipenv requirements --dev-only > requirements-dev.txt # 将Pipfile文件和Pipfile.lock文件里面的包名导出到requirements.txt文件 pipenv lock -r > requirements.txt # 通过requirements.txt安装依赖 pipenv install -r requirements.txt
- pipfile文件
# 主要用来配置包的下载网址 [[source]] # 指定包的安装镜像源,一般使用国内的镜像来加快下载速度 url = "https://mirrors.aliyun.com/pypi/simple/" verify_ssl = true name = "pypi" # 项目运行所需要依赖的第三方工具,即下载安装的工具包 [packages] flask-authz ==='2.4.0' # * 表示安装最新稳定版本 flask = '*' # 开发依赖的工具包 [dev-packages] # 开发环境需要的包,不常用 # Python 解释器配置 [requires] # 指定Python解释器的版本 python_version = "3.9"
- Pipfile.lock 文件
- Pipfile.lock 文件是通过哈希算法将包的名称、版本和依赖关系生成哈希值,可以保证包的完整性,锁定 Python 版本,便于以后项目发布使用固定的包。
- 在正常情况下,Pipfile.lock 文件不会自动更新工具的版本,例如安装的 requests 库一开始是 2.26.0 版本,后来指定安装 2.25.1 版本,那么 Pipfile 文件会更新,但是 Pipfile.lock 文件不会更新,只有手动执行 pipenv lock 命令后才会更新。
- Pipfile.lock 文件保存了包的哈希值,这是确保生产环境和开发环境包信息一致的关键。当我们把项目从开发环境复制到生产环境,我们只需要执行 pipenv install,而无须重新安装之前在开发环境中安装的包,这很省心。
conda管理工具
-
conda支持Python、R、Java、JavaScript、C等多种开发语言的包、依赖和环境管理工具,能运行在Windows、MacOS、Linux多个平台,可以在本地轻松创建、保存、切换环境。当安装anaconda时,会自动安装conda工具。
-
conda与pipenv,venv等虚拟环境管理工具的最大的不同在于:
- conda虚拟环境是独立于操作系统解释器环境的,即无论操作系统解释器什么版本(哪怕2.7),我也可以指定虚拟环境python版本为3.6,而venv是依赖主环境的
-
下载conda管理工具
- 通过安装Anaconda/Miniconda进行安装
- 关于Anaconda/Miniconda:https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
- Anaconda
- Anaconda官方下载地址:https://www.anaconda.com/download
- Anaconda国内下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
- Miniconda
- Miniconda 是一个 Anaconda 的轻量级替代,默认只包含了 python 和 conda,但是可以通过 pip 和 conda 来安装所需要的包。
- Miniconda官方下载地址:https://docs.conda.io/projects/miniconda/en/latest/
- Miniconda国内下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
-
安装Anaconda
- Anaconda/Miniconda安装完之后,会默认创建一个base虚拟环境
-
启动Anaconda
- 开始菜单 —— Anaconda/Miniconda —— Anaconda Prompt
- 如果想在系统自带的cmd中使用conda命令,则需要将Anaconda添加到环境变量中
# 1、在系统变量中新建一个变量 变量名:condapath 变量值:E:\Anaconda3 (这里就是Anaconda的安装目录) # 2、在系统变量中找到Path变量,点击编辑,把下面内容添加进去 %condapath% %condapath%\Scripts %condapath%\Library\bin %condapath%\Library\mingw-w64\bin
-
修改安装源
-
Anaconda/Miniconda默认安装源是国外的,三方库安装速度慢
-
常用命令
# 查看配置文件.condarc位置 conda config --show-sources # 查看配置文件中的安装源 conda config --show channels # 查看配置文件信息 conda config --show # 添加安装源 conda config --add channels <channel_url> # 设置安装源优先 conda config --set channel_priority true # 清空缓存 conda clean -i # 删除安装源 conda config --remove channels <channel_url>
-
.conda文件详解
- conda配置文件
.condarc
是一个可选的运行时配置文件,允许用户配置conda 的各个方面,例如在哪些channel中搜索包、代理设置和环境目录 - 配置文件内容
channels: - defaults show_channel_urls: true default_channels: - https://repo.anaconda.com/pkgs/main - https://repo.anaconda.com/pkgs/r - https://repo.anaconda.com/pkgs/msys2 custom_channels: conda-forge: https://conda-forge.org msys2: https://mirrors.ustc.edu.cn/msys2/ ssl_verify: false
- 参数说明
channels # 指定安装包时搜索channel的顺序 # 修改.condarc文件的channels会覆盖 conda 搜索的默认值,导致 conda 仅按给定顺序搜索此处列出的频道 show_channel_urls # 显示channel的URL。 default_channels # 指定默认的channels。 custom_channels # 指定自定义channels。 ssl_verify # 是否验证SSL证书 # 设置为false则关闭SSL验证(不推荐,除非本地网络配置需要) # 注意:关闭SSL验证可能会引起安全问题,除非你完全信任你的网络环境 envs_dirs # 设置虚拟环境默认创建目录
- conda把channel分为两类:
默认channel(default channels)
和社区channel(community channels)
- 如果不修改
.condarc
文件,conda会默认从这两类channel中搜索需要的包
- conda配置文件
-
国内镜像源
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 豆瓣源 http://pypi.douban.com/simple/ 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/ 华中科技大学 http://pypi.hustunique.com/ 腾讯源 http://mirrors.cloud.tencent.com/pypi/simple 华为镜像源 https://repo.huaweicloud.com/repository/pypi/simple/
-
修改安装源代码
- 清华源
channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
- 清华源
-
方法一:开始菜单 —— Anaconda Navigator —— File —— Preferences —— Configure Conda —— 粘贴上面修改安装源代码 —— Save and Rstart
-
方法二:直接修改.condarc配置文件
- 各系统都可以通过修改用户目录下的
.condarc
文件来使用TUNA
镜像源 - Windows用户无法直接创建名为
.condarc
的文件,可先执行下面语句生成该文件之后再修改conda config --set show_channel_urls yes
- 修改步骤
# 1. 生成的.condarc文件在在 C:\Users\用户名 目录下(我的 :C:\Users\Administrator) # 2. 使用记事本打开.condarc文件,粘贴上面的修改安装源代码即可 # 3. 运行 conda clean -i 清除索引缓存,保证用的是镜像站提供的索引
- 各系统都可以通过修改用户目录下的
-
方法三:使用Anaconda Prompt执行conda命令修改
- 启动 Anaconda Prompt 命令工具
# 添加清华源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ # 设置搜索时显示通道地址 conda config --set show_channel_urls yes # ========================================================================= # 添加阿里云镜像源 conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free/ conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main/ # 设置搜索时显示通道地址 conda config --set show_channel_urls yes # ========================================================================= # 添加中科大源 conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/ # 设置搜索时显示通道地址 conda config --set show_channel_urls yes
-
配置完后如果不生效可清空conda缓存再试试
conda clean -i
-
-
删除配置的安装源,恢复为默认
# 删除之前添加的镜像源,修改为默认的镜像 conda config --remove-key channels
Anaconda使用
-
Anaconda常用命令
conda -V # 查看版本(V是大写) conda create -n env_name python=3.9 # 创建python虚拟环境(指定python版本) conda create -n env_name2 --clone env_name1 # 克隆虚拟环境 conda create -n env_name python=3.9 包名=x.x # 创建虚拟环境的同时安装指定版本的三方库 activate env_name # 切换/激活虚拟环境,Linux系统前面要加source conda deactivate # 退出虚拟环境 conda config --show # 查看虚拟环境默认位置 conda install 包名=version # 在base环境中安装包 conda install -n env_name 包名 # 在指定虚拟环境安装包 activate env_name # 激活虚拟环境,Linux系统前面要加source conda remove -n env_name --all # 移除虚拟环境及所有包 conda remove env_name 包名 # 移除指定虚拟环境中的某个包 conda env list # 查看虚拟环境列表 conda list # 查看虚拟环境包列表 conda clean -p # 删除没有用的包
-
修改Anaconda创建虚拟环境默认路径
-
windows系统,创建的虚拟环境默认在用户目录的.conda\envs文件夹中
-
首先,通过 conda config --show 查看Anaconda虚拟环境默认安装路径
-
这里我们明明看到
E:\Anaconda3\envs
是第一个默认安装路径 -
但是,安装的时候就是安装到了
C:\user\administrator\.conda\envs
目录中 -
原因:
E:\Anaconda3\envs
目录是只读权限,我们只需要修改权限即可 -
Anaconda目录 —— 鼠标右键“属性”—— 安全 —— 编辑 —— 组或用户名 中选择 Users —— Users的权限勾选 完全控制 —— 应用 —— 确定
-
再次创建虚拟环境,通过
conda env list
可以看到新创建的虚拟环境就到了E:\Anaconda3\envs
目录中 -
如果我们想要将虚拟环境安装到我们指定的目录,则需要通过命令进行添加
- 1、创建目录 E:\envs
- 2、设置envs目录的操作权限,Users的操作权限为完全控制
- 3、在CMD命令中通过命令添加默认路径
conda config --add envs_dirs E:/envs # 通过 conda config --show 命令可以看到刚刚添加的目录默认会排在第一 # 如果我们要安装的目录没有排在第一,我们也可以通过conda config --add envs_dirs E:/envs命令来将目录提升到第一 # --add代码本意为添加路径,由于路径已经存在,便调整至了第一的位置
-
-
创建虚拟环境
conda create --name env_name python[==3.6] conda create -n env_name python[==3.6] # 最后python不指定版本,会指定最新版本创建虚拟环境 # 将虚拟环境创建在特定的文件中(windows系统,默认在用户目录的.conda\envs文件夹中。如:C:\Users\XieFeng\.conda\envs) # 指定虚拟环境安装目录 # 使用--prefix或简写-p选项,后面跟上您想要创建环境的完整路径 conda create --prefix /your/custom/path/env_name python=3.9 conda create --p /your/custom/path/env_name python=3.9
-
删除虚拟环境默认路径
conda config --remove envs_dirs E:/envs
-
查看conda版本
conda -V
-
更新conda版本
conda update conda
-
查看所有虚拟环境列表
conda env list
-
切换/激活虚拟环境
activate env_name
-
安装第三方包
-
使用conda命令
conda install 包名 conda install -c 指定源 包名
-
使用pip命令
pip install 包名 # 使用pip命令安装的包,卸载时也需要用pip命令卸载
-
使用GUI界面安装
1、在Anaconda Navigator中,选择Environments选项卡 2、然后选择Not install,在右边搜索框进行搜索需要的库包名字,选择需要的库包,选择apply进行安装
-
使用requirements.txt文件批量安装
1、在项目的根目录下创建一个名为requirements.txt的文件,列出所有需要安装的第三方包或库 2、在Anaconda Prompt或命令行中输入`pip install requirements.txt`命令
-
-
查看第三方包版本
# 查看当前虚拟环境下所有包及其版本信息 conda list # 查看指定包的版本及依赖包 conda list <package_name>
-
卸载第三方包
- 使用conda命令
conda remove package_name
- 使用pip命令
pip uninstall package_name
-
退出虚拟环境
conda deactivate
-
删除虚拟环境
conda remove -n env_name --all # 删除虚拟环境及其内部安装的所有包
-
项目交接1:通过.yml环境文件
# 使用conda-pack或conda env export等工具生成.yml环境文件 # 1、生成/更新.yml文件 # 默认生成的.yml文件保存在:C:\Users\用户名 conda env export > env_name.yml # 把当前环境的模块锁定,执行命令后它会更新 .yml文件 # 指定保存路径 conda env export > /path/to/your/directory/env_name.yml # 给指定路径下环境生成.yml文件 conda env export --prefix /path/to/your/env_name > /path/to/your/directory/env_name.yml # 或者 conda env export -p /path/to/your/env_name > /path/to/your/directory/env_name.yml # 2、把代码文件和.yml文件发给别人 # 3、别人创建项目目录,将代码文件和.yml文件存放到项目目录 # 通过.yml文件创建虚拟环境,会自动安装项目依赖的所有三方库 # 打开cmd命令行工具,进入项目目录 # 执行命令 conda env create -f env_name.yml
-
项目交接2:通过requirements.txt文件
- 使用pip命令
# 把包写入到requirements.txt中 pip freeze > requirements.txt # 使用requirements.txt文件批量安装包 pip install -r requirements.txt
- 使用conda命令
# conda 批量导出包含环境中所有组件的requirements.txt文件 conda list -e > requirements.txt # 通过运行以下命令来安装requirements.txt文件中列出的所有依赖项 conda install --yes --file requirements.txt # 这种执行方式,一遇到安装不上就整体停止不会继续下面的包安装 # 但是这里存在一个问题,如果requirements.txt中的包不可用,则会抛出“无包错误”。 # 使用下面这个命令可以解决这个问题 $ while read requirement; do conda install --yes $requirement; done < requirements.txt # 或者这样也行 FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" # 这个执行能解决上面出现的不执行后续包的问题 # 如果想要在conda命令无效时使用pip命令来代替,那么使用如下命令: $ while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt
-
项目交接总结
# 后续测试中发现,使用conda进行项目交接,总是出现各种失败 # 可以使用pip进行项目交接 1. 把包写入到requirements.txt中 pip freeze > requirements.txt 2. 把项目文件及requirements.txt文件一起发给对方 3. 对方创建虚拟环境(我以使用的conda创建的虚拟环境为例) # 虚拟环境和项目不在同一个目录中 conda create -n env_name python=3.9 4. 激活虚拟环境 activate env_name 4. 使用pip根据requirements.txt文件批量安装包 pip install -i 国内安装源 -r requirements.txt
-
环境打包
# 环境打包 conda env export > requirements.yml pip freeze > requirements_pip.txt
-
完全卸载Anaconda
- 进入控制面板 —— 选中 Anaconda —— 鼠标右键,卸载
- 等待卸载完成,进入
C:\用户\Administrator
目录(Administrator根据电脑用户名进行修改),删除文件及目录.condarc # 文件 .conda # 目录 .anaconda # 目录 .continuum # 目录
- 进入目录:C:\Users\Administrator\AppData\Roaming (Administrator根据电脑用户名进行修改),删除相关文件及目录
.anaconda # 目录
- 进入目录:C:\Windows\Prefetch,删除Anacond相关缓存文件
UNINSTALL-ANACONDA3.EXE-3A34EAC8.pf
安装第三方库注意事项
-
安装cx-Oracle
# pycharm中是搜索 cx-Oracle,使用conda安装是cx_oracle conda install cx_oracle
-
安装pyqt5
# pycharm中是搜索 pyqt5,使用conda安装是pyqt conda install pyqt 或者 conda install -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ pyqt