Python - 虚拟环境 venv
什么是虚拟环境
- 这是 Python 3.3 的新特性:https://www.python.org/dev/peps/pep-0405/
- 假设自己电脑主机的 Python 环境称为系统环境,而默认情况下,虚拟环境和系统环境是完全隔离的
- 每个系统环境下可以有多个虚拟环境
- 每个虚拟环境都有自己的 Python 二进制文件及单独的包安装目录,可以在虚拟环境中安装属于自己的 Python 包,而系统环境、其他虚拟环境并不会拥有这些 Python 包
一句话总结
Python 虚拟环境主要是为不同 Python 项目创建一个隔离的环境,每个项目都可以拥有独立的依赖包环境,而项目间的依赖包互不影响
为什么要虚拟环境
说下背景
- 假设一个电脑包含多个 Python 项目
- 每个项目所需的 Python 版本不一致,比如:Python 2.X、Python 3.X
- 每个项目所需的依赖包不一致,比如 A 项目只要 Selenium 相关依赖包,B 项目只要 Appium 相关依赖包
- 不同项目用同一个依赖包,但依赖包版本可能不一致
假设现在不同虚拟环境会有什么问题?
了解下第三方库的安装目录
默认情况下,Python 第三方库都是装在系统固定目录的,比如 Mac 电脑
>>> import site
>>> site.getsitepackages()
['/usr/local/Cellar/python@3.9/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages']
电脑上所有项目都会从这个目录去存储、查找第三方库(站点库)
带来的问题
- 不同项目使用同一个依赖包,但使用不同版本的依赖包时,意味着当开发 A 项目的时候,要装一次依赖包 A 版本,转开发 B 项目时,先要卸载依赖包 A 版本,再重装 B 版本...
- 一个环境下要安装所有项目需要的依赖包,所以当某个项目需要生成 requirement.txt 的时候,会带上很多用不上的依赖包,要删还得手工一个个删....
通过 venv 操作虚拟环境
Python 3.5 后推荐使用 venv 来创建虚拟环境
创建虚拟环境
python3 -m venv fastapi_test
fastapi_test 是虚拟环境名字,可以自定义
激活虚拟环境
source <环境名称>/bin/activate

可以看到虚拟环境中的 Package 只有最基础的 pip、setuptools
关闭虚拟环境
deactivate
Pycharm 项目关联新创建的虚拟环境

先在项目目录下创建好虚拟环境
Python Interpreter 选中虚拟环境

安装项目所需要的库

Pycharm 创建虚拟环境

- 选中 Python Interpreter
- 查看更多 Interpreters
- 添加一个新的 Interpreters
- 选择 New environment,默认选项即可,确定

查看虚拟环境的目录

刚刚创建的两个虚拟环境的目录其实是一样的
bin
与虚拟环境交互的文件
>> ll
total 72
-rw-r--r-- 1 polo staff 8.6K Sep 14 09:26 Activate.ps1
-rw-r--r-- 1 polo staff 1.9K Sep 14 09:26 activate
-rw-r--r-- 1 polo staff 882B Sep 14 09:26 activate.csh
-rw-r--r-- 1 polo staff 2.0K Sep 14 09:26 activate.fish
-rwxr-xr-x 1 polo staff 269B Sep 14 08:40 pip
-rwxr-xr-x 1 polo staff 269B Sep 14 08:40 pip3
-rwxr-xr-x 1 polo staff 269B Sep 14 08:40 pip3.9
lrwxr-xr-x 1 polo staff 9B Sep 14 08:40 python -> python3.9
lrwxr-xr-x 1 polo staff 9B Sep 14 08:40 python3 -> python3.9
lrwxr-xr-x 1 polo staff 39B Sep 14 08:40 python3.9 -> /usr/local/opt/python@3.9/bin/python3.9
include
编译 Python 包的 C 头文件
lib
包含Python 版本的副本(python3.9),以及安装每个依赖包的 site-packages 文件夹
>> pwd
/Users/polo/Downloads/FastAPI_project/fastapi_test/lib/python3.9/site-packages >> ll
total 224
drwxr-xr-x 3 polo staff 96B Sep 14 09:27 __pycache__
drwxr-xr-x 5 polo staff 160B Sep 14 08:40 _distutils_hack
-rw-r--r-- 1 polo staff 152B Sep 14 08:40 distutils-precedence.pth
drwxr-xr-x 28 polo staff 896B Sep 14 09:27 fastapi
drwxr-xr-x 8 polo staff 256B Sep 14 09:27 fastapi-0.68.1.dist-info
drwxr-xr-x 8 polo staff 256B Sep 14 08:40 pip
drwxr-xr-x 10 polo staff 320B Sep 14 08:40 pip-21.1.1.dist-info
drwxr-xr-x 7 polo staff 224B Sep 14 08:40 pkg_resources
drwxr-xr-x 53 polo staff 1.7K Sep 14 09:27 pydantic
drwxr-xr-x 9 polo staff 288B Sep 14 09:27 pydantic-1.8.2.dist-info
drwxr-xr-x 41 polo staff 1.3K Sep 14 08:40 setuptools
drwxr-xr-x 11 polo staff 352B Sep 14 08:40 setuptools-56.0.0.dist-info
drwxr-xr-x 27 polo staff 864B Sep 14 09:27 starlette
drwxr-xr-x 8 polo staff 256B Sep 14 09:27 starlette-0.14.2.dist-info
drwxr-xr-x 8 polo staff 256B Sep 14 09:27 typing_extensions-3.10.0.2.dist-info
-rw-r--r-- 1 polo staff 107K Sep 14 09:27 typing_extensions.py
从虚拟环境生成 requirement.txt
先看看有哪些包
> pip list
Package Version
----------------- --------
fastapi 0.68.1
pip 21.1.1
pydantic 1.8.2
setuptools 56.0.0
starlette 0.14.2
typing-extensions 3.10.0.2
pip freeze
在激活虚拟环境下敲
pip freeze > requirement.txt

这样生成的 requirement.txt 文件就只包含虚拟环境中已安装的依赖包了!
Python - 虚拟环境 venv的更多相关文章
- python 虚拟环境 venv 简单用法
Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv.该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持.每一个虚拟环 ...
- supervisor支持python虚拟环境venv
在项目中使用supervisor时,如何在虚拟环境下启动一直存在些小问题. 比如我要写 Cesi程序的监听,我是手动安装的执行之前 要先加载环境source venv/bin/activate 所以写 ...
- Python 虚拟环境 pyenv、venv(pyvenv)、virtualenv之间的区别
请参考连接 https://blog.zengrong.net/post/2167.html https://blog.csdn.net/lanonjj/article/details/5105021 ...
- 使用Anaconda的python安装虚拟环境是出现错误:python -m venv venvdir----Error: Command '['D:\\Development\\Django\\test\\Scripts\\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit
在创建python虚拟环境的时候,如果使用的是Anaconda中集成的python -m venv venvdir就会出现不能安装pip的错误,原因是Anaconda没有ensurepip, 解决办法 ...
- Python中虚拟环境venv的基本用法
环境windows 7 venv为python3中的默认库,无需安装. 创建新的venv方法, 在当前文件夹下执行cmd,输入如下代码 python -m venv bob bob为需要创建的文件夹名 ...
- mac 下python使用venv 虚拟环境
1.安装virtualenv :pip3 install virtualenv 2.创建虚拟环境命令:virtualenv --no-site-packages venv 在当前目录创建一个虚拟环境v ...
- [转载]windows下安装Python虚拟环境virtualenvwrapper-win
1 前言 由于Python的版本众多,还有Python2和Python3的争论,因此有些软件包或第三方库就容易出现版本不兼容的问题. 通过 virtualenv 这个工具,就可以构建一系列 虚拟的Py ...
- 在windows环境下利用virtualenv搭建Python虚拟环境
安装Python 安装时只有一点需要注意,一定一定要将Python添加到系统环境变量那一项勾选. 安装 virtualenv 加入系统目录之后,命令行(CMD)下就多了一条命令:pip.用pip可以自 ...
- windows下创建Python虚拟环境
windows下创建Python虚拟环境 说明 由于Python的版本众多,还有Python2和Python3的争论,因此有些软件包或第三方库就容易出现版本不兼容的问题. 通过 virtualenv ...
随机推荐
- kali linux重启网卡失败:Job for networking.service failed because the control process exited with error code. See "systemctl status networking.service" and "journalctl -xe" for details. 问题排查
linux菜鸡的时候,总是为了配置网络而烦恼,重启网卡的原因有很多,我这次是因为配置了固定IP[使用第三方工具连接]所以需要重启网卡,出现 Job for networking.service fai ...
- Java流程控制06——break continue
- Windows影子用户创建与3389连接
#当获得一条shell后,可以创建一个影子用户,通过影子用户可以行驶正常用户的所有权限与功能,并且只可在注册表中被检测出来---(应急响应注册表很重要) 1.首先需要拥有权限创建一个Administr ...
- Bugku-域名解析
做题之前了解一下域名解析,域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程.一个域名对应一个IP地址 ...
- C++ //继承中构造和析构顺序
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Base 6 { 7 pu ...
- markdown的摘要测试
123456789 1 123456789 2 123456789 3 123456789 4 123456789 5 123456789 6 粗体 123456 划线 123456 斜体 12345 ...
- Docker命令图
attach #当前shell下 attach连接指定运行镜像 build #通过DockerFile 定制镜像 commit #提交当前容器为新的镜像 cp #从容器中拷贝指定文件或者目录到宿主机中 ...
- Shell-15-脚本练习
批量生成随机字符串文件名 # 用for循环在 /test 目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字符加固定字符串 alnk #!/bin/bash ########### ...
- 从跨域与同源策略谈CSRF防御与绕过
之前偶然看到群里有小伙汁问这个token相关的问题,当时我酝酿了一下子,没想好怎么总结,今天来说一下 CSRF在过去还属于OWASP TOP10 ,现在已经不是了(补充一点:关于OWASP API 请 ...
- STM32—TIMx实现编码器四倍频
文章目录 一.储备知识 二.TIMx的编码器模式介绍 1.计数边沿设置 2.选择极性和使能 3.使能 4.计数方向 三.代码部分 一.储备知识 通过STM32的定时器编码器接口模式对编码器进行四倍频, ...